<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0cGR3k6eyp7ImA9WhRbFUU.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126</id><updated>2012-02-07T06:30:26.713+02:00</updated><category term="Business" /><category term="Personal" /><category term="Productivity" /><category term="Analytics" /><category term="MySQL" /><category term="Copyright" /><category term="Performance" /><category term="Mobile web" /><category term="SEO" /><category term="Linux" /><category term="Mac" /><category term="Review" /><category term="UX" /><category term="Tools" /><category term="Magento" /><category term="Spam" /><category term="Security" /><category term="Buzz" /><category term="TYPO3" /><category term="Apple" /><category term="Programming" /><category term="ExtJS" /><title>Dmitry Dulepov</title><subtitle type="html">Being smart and efficient. Building life for the greater good.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.dmitry-dulepov.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>180</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/dmitry-dulepov" /><feedburner:info uri="dmitry-dulepov" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CE8GSXszfSp7ImA9WhRbEE8.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-3188880670920330360</id><published>2012-01-31T17:13:00.003+02:00</published><updated>2012-01-31T17:13:48.585+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-31T17:13:48.585+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>Mac: adding a keyboard layout using AppleScript</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
We have a special keyboard layout in the country, where I live (Latvia). It includes certain special letters: like ā, ē, ū and so on. Many people here set Latvian keyboard layout as a default. However I cannot do that because this layout has one major disadvantage for people like me.&lt;br&gt;
&lt;br&gt;
Those special letters are typed by one of two ways: Alt+normal letter or &amp;#39;+normal letter. While the first way is goot, the second one is bad for programmers. I often use &amp;#39; in the code, so having &amp;#39; as a &amp;quot;dead key&amp;quot; (this is how it is called officially) is not suitable. But I still have to type those latvian chars sometimes. Until yesterday I kept English US layout as a default and added Latvian manually when I had to type latvian letters. This is a multiple move-and-click process. Yesterday I finally found a way to automate addition and removal of the layout.&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/01/mac-adding-keyboard-layout-using.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-3188880670920330360?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/8stai0JYVi8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/3188880670920330360/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/01/mac-adding-keyboard-layout-using.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3188880670920330360?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3188880670920330360?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/8stai0JYVi8/mac-adding-keyboard-layout-using.html" title="Mac: adding a keyboard layout using AppleScript" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-vBCZwRdcfCI/TygEd5qhj9I/AAAAAAAAAYc/yvbqBmLgWBI/s72-c/system-preferences.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/01/mac-adding-keyboard-layout-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMQn0ycCp7ImA9WhRVF0Q.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2237747928430737421</id><published>2012-01-17T10:53:00.000+02:00</published><updated>2012-01-17T10:53:03.398+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T10:53:03.398+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Current life</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wGXc0qr9AF3RdJBKHashEWXnYCs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGXc0qr9AF3RdJBKHashEWXnYCs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wGXc0qr9AF3RdJBKHashEWXnYCs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGXc0qr9AF3RdJBKHashEWXnYCs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I am not very much visible in TYPO3 these days. So I though I would give a short update on what I am doing or going to do.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/01/current-life.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2237747928430737421?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/wkSgj_kUhg8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2237747928430737421/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/01/current-life.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2237747928430737421?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2237747928430737421?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/wkSgj_kUhg8/current-life.html" title="Current life" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/01/current-life.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cBRHw5eyp7ImA9WhRVEk0.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-7140359129801756082</id><published>2012-01-10T16:17:00.000+02:00</published><updated>2012-01-10T16:17:35.223+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-10T16:17:35.223+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><category scheme="http://www.blogger.com/atom/ns#" term="Performance" /><title>Cleaning and optimising cache tables in TYPO3</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zspNItt3QtwP_PE0FnoqIscrzMk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zspNItt3QtwP_PE0FnoqIscrzMk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zspNItt3QtwP_PE0FnoqIscrzMk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zspNItt3QtwP_PE0FnoqIscrzMk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There is an important issue with cache tables in TYPO3, which I am going to address in this article. The issue can become critical for projects with a limited disk space, projects with lots of user groups, which use indexed search or Solr, or projects with lots of pages.&lt;br&gt;
&lt;br&gt;
Cache tables are designed to provide a high-performance access for simultaneous reads and writes. This means that several reads at a time should be possible as well as several writes and none should block each other. This is possible when cache tables use InnoDB MySQL database engine. InnoDB provides concurrency and data safety against sudden failures. TYPO3 uses InnoDB for several critical tables, including cache tables.&lt;br&gt;
&lt;br&gt;
Sometimes cache tables can grow a lot. The more records exist in the cache table, the slower it is to find a necessary record there. TYPO3 provides a special scheduler task to clean up old cache records. If you have TYPO3 4.6 or newer, you should always use that task.&lt;br&gt;
&lt;br&gt;
However, there is a certain fact that very few users know: &lt;i&gt;running the task will remove entries from the table but it will not recover the disk space taken by removed records&lt;/i&gt;. InnoDB does not reuse the space when records are deleted. It always appends new data to the end of the allocated data file. Thus it is possible to have a fully empty InnoDB table, which takes 100GB on the disk.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/01/cleaning-and-optimising-cache-tables-in.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-7140359129801756082?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/IJBkZvVHQX4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/7140359129801756082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/01/cleaning-and-optimising-cache-tables-in.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7140359129801756082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7140359129801756082?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/IJBkZvVHQX4/cleaning-and-optimising-cache-tables-in.html" title="Cleaning and optimising cache tables in TYPO3" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>7</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/01/cleaning-and-optimising-cache-tables-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAFSX0_eyp7ImA9WhRWEk4.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-5632547733351956012</id><published>2011-12-30T11:32:00.000+02:00</published><updated>2011-12-30T11:35:18.343+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-30T11:35:18.343+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Productivity" /><title>How to solve any kind of problems</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f7b4ez5aFjVE0-LLXwwoltBTdaQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f7b4ez5aFjVE0-LLXwwoltBTdaQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f7b4ez5aFjVE0-LLXwwoltBTdaQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f7b4ez5aFjVE0-LLXwwoltBTdaQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I planned to write this post for a long time. The post is long and it provides detailed instructions on solving any kind of problems. Surprisingly, when it comes to solving problems, the same algorithm works for everything. I came to this algorithm after 15 years of being a software developer, a manager for my own company projects, a family man and a dad. It is not importatnt where the problem is as soon as you folloe the algorithm. You can solve the problem with it, if it is solvable according to laws of the nature and means you have under hand.

The algorithm consists from six steps. Let's begin.

&lt;h2&gt;Realize that the problem exists&lt;/h2&gt;

This may sound dumb but this is where the failures start. How much time did you say to yourself: "Oh, it is not a proble!m" only to regret later that you did not address it in the beginning? Son has bad marks in school? Ah, well, he will recover. Customer complains? Ah, well, they always find something to complain about.

Sorry, it does not work. Listen to your instincts. If they say, you might have a problem, than most likely you have it. &lt;b&gt;The cost of solving the problem increases with time.&lt;/b&gt; The later you realize you have the problem, the more effort you have to make to solve it. The more you delay, the more you loose.

So, the very first step to solve the problem is to realize that it exists. Be honest with yourself and say it to yourself: "I have a problem to solve". With that you are closer to solving the problem than you was before. This helps you to commit to solving the problem. 

&lt;h2&gt;Realize what the problem is&lt;/h2&gt;

This is a different step. If you realize that you have a problem, it does not mean you realize what the problem is. Your son is getting bad marks? Is that a problem? Most people will say "yes" and be wrong here. Getting bad marks is not a problem, it is a result, an outcome of the problem. This is why it is important to realize what the problem is. 

Uncovering the real problem could be difficult but this is the time when you should not rush. If you rush now, you may end up solving an imagined problem, not a real one. Really, bad marks - what else could be a problem? Well, tons of them. It can be bad relations with classmates or teachers, wrong course, even medical issues! &lt;b&gt;You must invest time to understand the root, the cause of the problem!&lt;/b&gt; If your head aches, you would not chop it, right? For the first time you may take a medicine to ease the pain but if the pain returns, you go to see the doctor. Same with any other problem: get to the root of it, see if your "problem" is not a sympthom of something deeper.

&lt;h2&gt;Research possible solutions&lt;/h2&gt;

This is what most people never do. That just catch the first idea that comes to their mind and go for it. This rarely works satisfactory. The first solution is almost never good. Therefore for years I nver take the first thing that comes to my mind as a solution. I know that there always exists a better solution. It only ta,es time to get it. Cool down. Stop. Don't rush again. Think!

Depending on the complexity of the problem and your familiarity with the topic it may take from minutes to months to discover the solution. Months is extreme, of course. Usually it does not take that long. For technical issues I take about 3-4 hours to do something else while putting the problem somewhere to the back of my mind (I imagine it like an old closet of 18th century with many small doors where I can put the problem to "cook" for a while). For something related to kids I usually must sleep ovErnight to Find a decision.

It really works. Everytime when I find a better solution, I am surprised how better it it than the first idea that came to my mind. May be this is why my work is usually good: I take time to think about it while doing other tasks. It does work!

&lt;h2&gt;Make a plan&lt;/h2&gt;

Yup, this is another thing very few people do.

You do not have to write a detailed plan on a roll of paper or in the spreadsheet. Well, you can, if you want or if the problem is complex and sution is lengthy, but a menthal plan do in most cases. The reason for having a plan is simple: &lt;b&gt;You must know what to do exactky to solve the problem and in what sequence&lt;/b&gt;. Chaos is not your way, believe me.

&lt;h2&gt;Execute&lt;/h2&gt;

Only now, when you are clear about the problem, solution and plan, you can go and execute your plan. Remember, that there are no plans without flaws. Even brilliant plans have flaws. So be able to readjust dynamically by temporary going back as many steps as you need. This may sound complicated and time consuming but it is not. When you become used to this algorithm, you will discover to your amazement that you can do it automatically. It is simplicy practice.

&lt;h2&gt;Wrap-up&lt;/h2&gt;

It is a good thing to make a wrap-up after the problem is solved. I rarely write down what the problem was and what I did to solve it (right and wrong) but if you can write it down in a personal diary, it would be good. You can come to it later if necessary.

Why don't I do it? Well, I do not like to write on paper and I could not find a good app for that. At least, I do a quick analysis afterwards and try to see what I did well and what I did badly. That helps to avoid the same mistakes later.

&lt;h2&gt;Conclusion&lt;/h2&gt;

What do you think of this? Does that sound like a good algorithm to you? I you have anything to add, please, write in in comments.

P.S. No, my son does not have bad marks :) It was just a common example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-5632547733351956012?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/j7oro3U08og" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/5632547733351956012/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/how-to-solve-any-kind-of-problems.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5632547733351956012?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5632547733351956012?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/j7oro3U08og/how-to-solve-any-kind-of-problems.html" title="How to solve any kind of problems" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/how-to-solve-any-kind-of-problems.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8MQH04fyp7ImA9WhRXGU4.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6663501351861619088</id><published>2011-12-26T22:21:00.001+02:00</published><updated>2011-12-26T22:21:21.337+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T22:21:21.337+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Transferring domains from GoDaddy</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IYDJ8iFzO_UGzzXWglfHNAgPKl8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IYDJ8iFzO_UGzzXWglfHNAgPKl8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IYDJ8iFzO_UGzzXWglfHNAgPKl8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IYDJ8iFzO_UGzzXWglfHNAgPKl8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I am transferring all my domains from GoDaddy to protest against their SOPA support. This means my blog may become unavailable for a short time in the coming days until the domain name is fully visible with a new registar. In case, if you cannot see this blog, do not panic. It will be back online.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6663501351861619088?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/-qE9nE1FaW8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6663501351861619088/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/transferring-domains-from-godaddy.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6663501351861619088?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6663501351861619088?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/-qE9nE1FaW8/transferring-domains-from-godaddy.html" title="Transferring domains from GoDaddy" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/transferring-domains-from-godaddy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4DSX08eSp7ImA9WhRQF0Q.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-8626935934373770030</id><published>2011-12-13T17:42:00.002+02:00</published><updated>2011-12-13T17:42:58.371+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T17:42:58.371+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>How to make a Macbook Pro DVD drive region-free in Lion</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Oikpimo_TRZavoYQYIqAfMjHSVc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oikpimo_TRZavoYQYIqAfMjHSVc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Oikpimo_TRZavoYQYIqAfMjHSVc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oikpimo_TRZavoYQYIqAfMjHSVc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Apple ships Macbooks with drives without a region set. However, before you watch the movie, you have to set a region. Later you can change it but not more then four times. The solution is to this problem is to flash your DVD drive with a modified &amp;quot;RPC-1&amp;quot; firmware. The risks are as usual: anything can grow wrong, you can brick your drive, warranty is under question, etc. So don&amp;#39;t do that unless you are ready to take the risk.&lt;br&gt;
&lt;br&gt;
There are lots of instructions on the web how to make it. For my drive, Google leads me to two pages: &lt;a href="http://hackthemac.blogspot.com/2010/02/while-back-i-recorded-how-to-make.html"&gt;one&lt;/a&gt; and &lt;a href="http://forum.rpc1.org/viewtopic.php?f=30&amp;amp;t=46116&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a"&gt;two&lt;/a&gt;. They are all ok except that they require a Matshita Flasher application, which does not work in Lion (PPC applications are not supported). However, this application is only a wrapper around the real flasher, so you &lt;b&gt;can&lt;/b&gt; flash your Macbook under Lion too. Notice: I did not tell you to do it! I am just providing the information.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/how-to-make-macbook-pro-dvd-drive.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-8626935934373770030?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/pz9fZIxkG8k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/8626935934373770030/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/how-to-make-macbook-pro-dvd-drive.html#comment-form" title="30 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8626935934373770030?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8626935934373770030?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/pz9fZIxkG8k/how-to-make-macbook-pro-dvd-drive.html" title="How to make a Macbook Pro DVD drive region-free in Lion" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>30</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/how-to-make-macbook-pro-dvd-drive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMDQXc6fyp7ImA9WhRQEEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6869383800191625398</id><published>2011-12-05T09:00:00.000+02:00</published><updated>2011-12-05T15:57:50.917+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-05T15:57:50.917+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><title>Improving battery life for Apple devices</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mw0nLRbCWEGpCHRadYhB9_UkEJk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mw0nLRbCWEGpCHRadYhB9_UkEJk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mw0nLRbCWEGpCHRadYhB9_UkEJk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mw0nLRbCWEGpCHRadYhB9_UkEJk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There is an ongoing discussion on the Internet about troubles with iPhone 4S battery and iOS 5. Many users got decreased battery life with iOS 5. While it is definitely a problem in the firmware, there are ways that can help you increase battery life of any Apple device. I am talking Apple here because I used that for every Apple device I owned. Apple designs batteries themselves and all batteries I had, were made by a single manufacturer. So other devices may need a different way to extend battery life.&lt;br&gt;
&lt;br&gt;
When I got a new iPhone 4S, it came with iOS 5.0. I upgraded to iOS 5.0.1. The phone did not survie a day of charge. Now it survives 3 days with using e-mail, twitter, facebook + location services. How did I do that?&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/improving-battery-life-for-apple.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6869383800191625398?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/bRrlg3ApJH8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6869383800191625398/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/improving-battery-life-for-apple.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6869383800191625398?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6869383800191625398?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/bRrlg3ApJH8/improving-battery-life-for-apple.html" title="Improving battery life for Apple devices" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-_JX38Q9Kk6c/TttEmCkKinI/AAAAAAAAAX8/ibcVPwErfEI/s72-c/battery-conditioned.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/improving-battery-life-for-apple.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNQXc5eCp7ImA9WhRRGUQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1698412050733716247</id><published>2011-12-04T10:46:00.001+02:00</published><updated>2011-12-04T11:19:50.920+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-04T11:19:50.920+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Productivity" /><title>Efficient e-mail communication</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mUONL612ucqO1OO6y33d_TfWYxM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mUONL612ucqO1OO6y33d_TfWYxM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mUONL612ucqO1OO6y33d_TfWYxM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mUONL612ucqO1OO6y33d_TfWYxM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Frech IT company named Atos (74,000 employees) will &lt;a href="http://abcnews.go.com/blogs/business/2011/11/tech-company-implements-employee-zero-email-policy/"&gt;completely ban all internal e-mails&lt;/a&gt; in 1.5 years. Its CEO, Tony Breton, said that an average employee gets about 200 e-mails daily. Of them, about 18% are spam and only 10% are useful. They already reduced e-mail traffic by 20% and happy with results. Atos management says that employees will continue to communicate using instant messaging and Facebook-like posts.&lt;br&gt;
&lt;br&gt;
Atos made a step towards better efficiency in business communication. This is a great and clever decision.&lt;br&gt;
&lt;br&gt;
I agree that e-mail channels often become a major distraction way. While it is possible to filter out spam effectively with relatively simple measures, other e-mail message often &lt;a href="http://www.dmitry-dulepov.com/2009/09/e-mail-puzzle.html"&gt;remain inefficient&lt;/a&gt;. Many mails come with extra words, long disclaimers, polite but needless &amp;quot;how are you&amp;quot;s, etc. I believe that business correspondence should be strictly about business. This position may seem extreme to some readers. We all know that business often grows due to personal relations. But it is a good thing to separate personal and business when you want to talk about tasks. Time is extremely valuable, so loosing it for inefficient e-mails is not a good thing. If it is a business e-mail, it is about business, so let&amp;#39;s get straight to business without personal stuff. Personal stuff is ok in personal e-mails but if person A needs person B to do something, just ask for it. The clearer A does it, the more chances that he will get it.&lt;br&gt;
&lt;br&gt;
Here is an example of a great e-mail I got recently:&lt;br&gt;








&lt;br&gt;
&lt;blockquote class="tr_bq"&gt;
Hi Dmitry, &lt;/blockquote&gt;
&lt;blockquote class="tr_bq"&gt;
for our XYZ customer, we have a new request to extend RealURL. It sounds quite simply. Could you please check if this is possible an how much effort it takes you to do the changes with RealURL? &lt;/blockquote&gt;
&lt;blockquote class="tr_bq"&gt;
With RealURL it is possible to ...&lt;/blockquote&gt;
&lt;div class="p1"&gt;
This is an excellent e-mail: short, concrete, easy to read, clear. When I communicate, I prefer the same style:&lt;/div&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/efficient-e-mail-communication.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1698412050733716247?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/lcN0y-vxC7Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1698412050733716247/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/efficient-e-mail-communication.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698412050733716247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698412050733716247?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/lcN0y-vxC7Y/efficient-e-mail-communication.html" title="Efficient e-mail communication" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/efficient-e-mail-communication.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMMQHw5cCp7ImA9WhRQEEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-3154276308212102183</id><published>2011-12-02T11:31:00.001+02:00</published><updated>2011-12-05T15:58:01.228+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-05T15:58:01.228+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tools" /><title>Importance of tools</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fTkX38Q_IZkQz7f4xPGo9IqyFjo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fTkX38Q_IZkQz7f4xPGo9IqyFjo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fTkX38Q_IZkQz7f4xPGo9IqyFjo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fTkX38Q_IZkQz7f4xPGo9IqyFjo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Quite often I hear an opinion that tools do not matter. If the person is good at his work, he will do it well with any tools. Well, this is both true and false.
&lt;br&gt;
&lt;h2&gt;


When tools do not matter&lt;/h2&gt;
When I was in school, I went to a photography class after official lessons. It was not like a school class, it was more like a community of pupil with an adult teaching us how to make photos. He owned a very good camera (6x6 cm) and we all complained that he can do good photos with his good equipment, while we can&amp;#39;t do it with our cheap cameras.&lt;br&gt;
&lt;br&gt;
Once he became annoyed by our complaints and took us to the outside for a three hour training in the forst. We were to photograph freely what we see and like. Some went do their work alone, our followed our teacher trying to make the same photos as he did. He gave everybody the &lt;a href="http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Lomo_smena_8m.jpg"&gt;cheapest possible camera&lt;/a&gt; (we had a stock of them in the class) and took one of them too.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/importance-of-tools.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-3154276308212102183?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/SkqWTjDbRbo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/3154276308212102183/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/importance-of-tools.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3154276308212102183?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3154276308212102183?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/SkqWTjDbRbo/importance-of-tools.html" title="Importance of tools" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/importance-of-tools.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMNQ348cCp7ImA9WhRQEEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1330981741204609477</id><published>2011-11-30T20:04:00.001+02:00</published><updated>2011-12-05T15:58:12.078+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-05T15:58:12.078+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tools" /><title>PhpStorm 3.0 is out</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nfzBklUId8yvn9Whm7ze2M1npqQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nfzBklUId8yvn9Whm7ze2M1npqQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nfzBklUId8yvn9Whm7ze2M1npqQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nfzBklUId8yvn9Whm7ze2M1npqQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Just got a message from JetBrains:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
PhpStorm 3.0 is now available and introduces the Smart Duplicated Code Detector to help you quickly find similar blocks through your entire code base and securely get rid of them without losing the intended functionality.&lt;br /&gt;
Also a new integrated UML tool allows you to quickly get a bird’s-eye-view of your project structure, or even a semantic view of the changes in the recent VCS commits made by your colleagues.&lt;br /&gt;
Furthermore, to ensure that your code works fast and doesn’t cause any performance bottlenecks, the IDE now includes a profiler, a new PHPUnit test runner and JSTestDriver.&lt;br /&gt;
The new key functionality in PhpStorm 3.0 includes:&lt;br /&gt;
- Smart Duplicated Code Detector&lt;br /&gt;
- PHP UML roundtrip diagrams&lt;br /&gt;
- Profiling results browser for Xdebug and Zend Debugger engines&lt;br /&gt;
- PhpUnit 3.6 integration&lt;br /&gt;
- CoffeeScript support&lt;br /&gt;
- Significant improvements to FTP/SFTP Sync&lt;br /&gt;
- TFS support and revision graph for GIT&lt;br /&gt;
- Streamlined UI across all operating systems&lt;/blockquote&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;a href="http://www.jetbrains.com/phpstorm?php"&gt;Get PhpStorm 3.0&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1330981741204609477?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/9u5MM3VPBV0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1330981741204609477/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/phpstorm-30-is-out.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1330981741204609477?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1330981741204609477?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/9u5MM3VPBV0/phpstorm-30-is-out.html" title="PhpStorm 3.0 is out" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/phpstorm-30-is-out.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcCQno4fip7ImA9WhRRFks.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2433051180003531434</id><published>2011-11-30T15:30:00.001+02:00</published><updated>2011-11-30T15:34:23.436+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T15:34:23.436+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Submitting FLUID forms</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
If you use&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;f:form&lt;/span&gt; view helper and submit data using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;GET&lt;/span&gt; requests, make sure you add &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;noCacheHash="true"&lt;/span&gt; to the f:form. For example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;f:form action="register" method="post" id="tx_myext" noCacheHash="true"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you don't, you will put a copy of the page to the cache for each submitted request. That's not necessary.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It is good to put this option also when you submit using POST because there is no need for cHash in such case.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2433051180003531434?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/pUynZu62XTc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2433051180003531434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/submitting-fluid-forms.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2433051180003531434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2433051180003531434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/pUynZu62XTc/submitting-fluid-forms.html" title="Submitting FLUID forms" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/submitting-fluid-forms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4FQ3s6eSp7ImA9WhRRFkk.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-4765814821883415707</id><published>2011-11-30T10:34:00.001+02:00</published><updated>2011-11-30T11:05:12.511+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T11:05:12.511+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>USER_INT is not evil, your code is!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lxbSG1sGKqGKpkCL_37UXJECrQA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lxbSG1sGKqGKpkCL_37UXJECrQA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lxbSG1sGKqGKpkCL_37UXJECrQA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lxbSG1sGKqGKpkCL_37UXJECrQA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Quite often I hear a wrong idea that USER_INT plugins is a source of all evil when it comes to TYPO3 performance. I have to bust this myth into dust.&lt;br&gt;
&lt;br&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;img border="1" height="226" src="http://2.bp.blogspot.com/-DEwsNPyTRAo/TtXuy1PSEfI/AAAAAAAAARE/HDY2MJpJuMs/s320/iStock_000005198862Small.jpg" width="320"&gt;&lt;/div&gt;
&lt;br&gt;
&lt;span id="goog_1234103490"&gt;&lt;/span&gt;&lt;span id="goog_1234103491"&gt;&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
When TYPO3 renders a page, it has to do a lot of stuff. What happens when you request a page under /profile/details/ URL? Firsts, TYPO3 has to resolve the URL to a page id. It calls RealURL to do that. RealURL makes a lot of stuff internally. In the happiest case it makes at least one database query. In the worst case number of database queries will be more than a number of tree levels to the page. TYPO3 page tree implementation is not optimised for performance at all, so you start loosing speed already here. Did anybody thought “nested set”? Nope, no such thing in TYPO3.&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/11/userint-is-not-evil-your-code-is.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-4765814821883415707?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/JrXK0igefcQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/4765814821883415707/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/userint-is-not-evil-your-code-is.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/4765814821883415707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/4765814821883415707?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/JrXK0igefcQ/userint-is-not-evil-your-code-is.html" title="USER_INT is not evil, your code is!" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-DEwsNPyTRAo/TtXuy1PSEfI/AAAAAAAAARE/HDY2MJpJuMs/s72-c/iStock_000005198862Small.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/userint-is-not-evil-your-code-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08ARnY8eyp7ImA9WhRRFUo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2677286336206226362</id><published>2011-11-29T16:52:00.001+02:00</published><updated>2011-11-29T17:17:27.873+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T17:17:27.873+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Business" /><title>Two types of developers</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sGCIg894OujvlOamnK9SmXYkLxQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sGCIg894OujvlOamnK9SmXYkLxQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sGCIg894OujvlOamnK9SmXYkLxQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sGCIg894OujvlOamnK9SmXYkLxQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I divide all developers into two types: team developers and solo developers. Any developer can be good or bad but these two types are fundamentally different in their thinking and approaches to work. It is important to know with whom you work and adjust accordingly.&lt;br&gt;
&lt;h2&gt;

Team developers&lt;/h2&gt;
Team developers work well in a team. They need other players. They can work on their assigned tasks but only if those tasks are a part of a whole. Team developers do not like to assume a complete responsibility on the project.&lt;br&gt;
&lt;br&gt;
Typically team developers usually communicate well with others, they like to communicate and socialize. They can do the assigned work of any kind but they generally do not have or strive to leran new stuff. They are not entrepreneurs at heart. However they work great in the team. So they are especially useful in big projects when management needs &amp;quot;resources&amp;quot; to fulfil the task.&lt;br&gt;
&lt;br&gt;
Team developers can become good team leaders because they understand the environment they work in.&lt;br&gt;
&lt;h2&gt;

&lt;/h2&gt;&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/11/two-types-of-developers.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2677286336206226362?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/L068olfAzK0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2677286336206226362/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/two-types-of-developers.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2677286336206226362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2677286336206226362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/L068olfAzK0/two-types-of-developers.html" title="Two types of developers" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/two-types-of-developers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUINQ3w5eyp7ImA9WhRRFUg.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1698567290451086878</id><published>2011-11-29T09:59:00.001+02:00</published><updated>2011-11-29T09:59:52.223+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T09:59:52.223+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Blog migration, RSS feed woes</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uvPps1vyor5RrH80y-wml4EDKlk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvPps1vyor5RrH80y-wml4EDKlk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uvPps1vyor5RrH80y-wml4EDKlk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvPps1vyor5RrH80y-wml4EDKlk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
As you may have noticed, I migrated to an external blog service. Domain name is the same but I am using Blogger now. There were several reasons to migrate:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;I do not want to maintain the infrastructure.&amp;nbsp;The blog ran on my own server, so I had to watch logs, do updates, etc. I rather not to do that because this blog is a hobby and not a real project.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Better blogging capabilities. As a &lt;a href="http://www.dmitry-dulepov.com/2011/10/using-typo3-for-blogging.html" style="text-align: -webkit-auto;"&gt;wrote&lt;/a&gt;&lt;span class="Apple-style-span" style="text-align: -webkit-auto;"&gt; already, TYPO3 is not really good for blogging at the moment. Blogger gives far more power tools&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;RTE is much better. When I prepared posts in the past, I always had to fight the TYPO3 RTE. It inserted &amp;amp;nsbp; all over the place, it changed markup all the time, added new paragraphs. So I sent at least 20∞ of time reformatting the article after it was published. Now I simply type and it works.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Better spam handling. There is one guy from India, who&amp;nbsp;regularly&amp;nbsp;tries to abuse my blog by posting offensive words in his language together with phrases like "TYPO3 is great". Other Indians (for whom I have a great respect as a nation), would come here and see all that junk and turn away. This abuser is filtered away automatically now. Never could understand why would people do such destructive things...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
About RSS&lt;/h3&gt;
The side effect of changing the blog is that everybody, who subscribed to &lt;a href="http://feeds.feedburner.com/dmitry-dulepov"&gt;my RSS feed&lt;/a&gt;, got a lot of old articles marked as unread. I apologize for that. It happens when the blog platform changes. Just mark them as read.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Also I ask subscribers to check the feed they use. The right feed is http://feeds.feedburner.com/dmitry-dulepov. If you use anything else, please, subscribe to &lt;a href="http://feeds.feedburner.com/dmitry-dulepov"&gt;http://feeds.feedburner.com/dmitry-dulepov&lt;/a&gt;. All other feed links will cease to exist soon.&lt;br /&gt;
&lt;br /&gt;
After using Blogger for a day I feel excited. It is very convenient. I think I'll blog more now. I have ideas for the whole set of articles on TYPO3, better coding, doing stuff in a right way. So stay tuned :)&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1698567290451086878?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/o50opK3_RTY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1698567290451086878/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/blog-migration-rss-feed-woes.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698567290451086878?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698567290451086878?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/o50opK3_RTY/blog-migration-rss-feed-woes.html" title="Blog migration, RSS feed woes" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/blog-migration-rss-feed-woes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4AQHg_eCp7ImA9WhRRFEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2481693802425313828</id><published>2011-11-28T16:35:00.001+02:00</published><updated>2011-11-28T16:35:41.640+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T16:35:41.640+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Internal knowledge</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eyNvL0439cHpIzzr2xJqjpmAFLo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eyNvL0439cHpIzzr2xJqjpmAFLo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eyNvL0439cHpIzzr2xJqjpmAFLo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eyNvL0439cHpIzzr2xJqjpmAFLo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There is one way to introduce problems in the code, which I'd like to discuss today.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a module, which creates database records. The module has an integer field with a set of flags (each flag is a single bit in the integer). Flags 2 and 4 mean thing X. Flags 2 and 6 mean thing Y. Flag 1 must be used only together with flag 3 or flag 5. The module knows how to manage those flags and what to make of them. Let's name it “module 1”.&lt;br /&gt;
&lt;br /&gt;
Now imagine another module (“module two”). It needs to get information from the first module, that matches certain criteria. Module one would be able to provide that information by matching flags.&lt;br /&gt;
&lt;br /&gt;
Here is the tricky part. The most obvious solution would be simply to query the database directly from module two. Proper solution for module two would be to ask module one for the information. Querying module one's tables using a combination of flags is wrong. Such query uses the internal knowledge of module one outside of the module one. Thus, the implementation of module two becomes dependent on the implementation of module one.&lt;br /&gt;
&lt;br /&gt;
Do you see potential problems here?&amp;nbsp;If module one changes, module two breaks. This "solution spread" introduces unnecessary dependencies between logically separate modules, which is neither necessary, nor good.&lt;br /&gt;
&lt;br /&gt;
A proper way would be to create an API in the module one that returns records, required by module two. If the internal implementation of module one changes, module two will work because all internal proceedings happen inside a single place.&lt;br /&gt;
&lt;br /&gt;
Next time, when you are about to introduce cross-module dependencies, think of minimising them in favor of API usage.&lt;br /&gt;
&lt;br /&gt;
This article was inspired by a &lt;a href="http://forge.typo3.org/issues/32136"&gt;http://forge.typo3.org/issues/32136&lt;/a&gt; in TYPO3.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2481693802425313828?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/qBEWs2onNXY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2481693802425313828/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/internal-knowledge.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2481693802425313828?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2481693802425313828?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/qBEWs2onNXY/internal-knowledge.html" title="Internal knowledge" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/internal-knowledge.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACR3k6eyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1963472653701708564</id><published>2011-11-27T19:42:00.000+02:00</published><updated>2011-11-28T11:16:06.713+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:16:06.713+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Productivity" /><title>Productivity</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/INZFtgT9OD4r_ck3FdBoDfnjPoc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INZFtgT9OD4r_ck3FdBoDfnjPoc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/INZFtgT9OD4r_ck3FdBoDfnjPoc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INZFtgT9OD4r_ck3FdBoDfnjPoc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Instead of giving you a full post about productivity, I'll give you a link to much better information than I was going to write. &lt;link -="" external-link-new-window="" http:="" productiveblog.tumblr.com=""&gt;&lt;/link&gt;&lt;a href="http://productiveblog.tumblr.com/"&gt;The Ultimate Productivity Blog&lt;/a&gt; gives you a 100% productivity recipe.&lt;br /&gt;
Read it. You will love it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1963472653701708564?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/d_nktiK5GdA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1963472653701708564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/productivity.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1963472653701708564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1963472653701708564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/d_nktiK5GdA/productivity.html" title="Productivity" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/productivity.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AMQn09eyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1590428282372846059</id><published>2011-11-27T11:35:00.000+02:00</published><updated>2011-11-28T11:16:23.363+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:16:23.363+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Frustrated by the tt_news upgrade</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OctnAm77YjRXndF_9e0wiavov68/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OctnAm77YjRXndF_9e0wiavov68/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OctnAm77YjRXndF_9e0wiavov68/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OctnAm77YjRXndF_9e0wiavov68/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Today I wanted to write a blog post about productivity. Coming to the BE I noticed that I still had TYPO3 4.4.9 running. So I went to upgrade. It usually takes 10-20 minutes to upgrade a TYPO3 version for me. Well, it took nearly 2.5 hours and I had to revert from tt_news 3.1.0 to old good tt_news 2.5.0 because 3.1.0 simply does not work properly. Here is what does not work:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;When the plugin is inserted as a content element, it does not appear on the page. The reason is that it does not add itself to TypoScript anymore (to tt_content.list.20). I had to investigate and add it manually.&lt;/li&gt;
&lt;li&gt;New page browser in tt_news does not replace certain markers out of the box. Why couldn't the developer simply use a pagebrowse extension instead of doing a complex thing himself?&lt;/li&gt;
&lt;li&gt;The formatting is changed too much.&lt;/li&gt;
&lt;/ul&gt;
You can tell me that TYPO3 4.4.9 and tt_news 2.5.0 is too old. Yes, that's true. You are absolutely right. But there is one important thing to know. I had no problems updating TYPO3 core or any other extension. However I had huge problems with tt_news. As usual.&lt;br /&gt;
People, when you write your code, remember a gold rule: the less problems people have with your creation, the more they will like it. Upgrade should be smooth. Behavior should be compatible!&lt;br /&gt;
I hate tt_news. (Georg, yes, I know about news2 but I am not ready to migrate to it. I am out of time.)&lt;br /&gt;
No productivity blog post for today because my productivity for today is out of order, thanks to tt_news.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1590428282372846059?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/w71uKfi-vwM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1590428282372846059/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/frustrated-by-ttnews-upgrade.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1590428282372846059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1590428282372846059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/w71uKfi-vwM/frustrated-by-ttnews-upgrade.html" title="Frustrated by the tt_news upgrade" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>8</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/frustrated-by-ttnews-upgrade.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ANQnczeyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6231780375587691641</id><published>2011-11-18T12:35:00.000+02:00</published><updated>2011-11-28T11:16:33.983+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:16:33.983+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Buzz" /><title>Future from Microsoft</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HB-8RLGOlms4hbfhhp67zshMNjc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HB-8RLGOlms4hbfhhp67zshMNjc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HB-8RLGOlms4hbfhhp67zshMNjc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HB-8RLGOlms4hbfhhp67zshMNjc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I came across a video, which is a Microsoft's version of the future. Here it is:&lt;br /&gt;
&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/a6cNdhOKwi0" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;
This is beautifully rendered video but... it is fully Microsoft video :) Microsoft is different from many other companies in the way that they never invented much. They worked on inventions of others. For example, almost everything in this vide is either multitouch, or iPad-like or a 3D monitor from a science fiction. Nothing of this is new, everything was seen in movies already (take "V", for example for interfaces).&lt;br /&gt;
The other thing that bothered me, is that Microsoft believes it is the future, while most of it is present. HUDs (head-up displays) are quite common. BWM has them in cars, there are even eyeglasses with HUDs now (you can read e-mail with them or see geographical pointers). Multitouch exists for years in all Apple products. Gestures without touching was recently patented, which means implementation is is the labs already. 3D holograms exist for years. You can read news with phones, which are getting very slim, donate, set appointments and send instructions. Nothing of that is new! So where is the future in this video?&lt;br /&gt;
The kitchen has the same microwave (which makes your products less healthy for you). It is all present, nothing is from the future.&lt;br /&gt;
Pumps? In future??? Nuh.&lt;br /&gt;
If Microsoft wanted to show more of the future, they would not look to pumps or luxury cars. They would show holographic meetings (like in "Resident Evil: Extinction"), all green energy, voice controlled equipment ("Hi, Siri!"), less traveling  and more time with family. That would the future.&lt;br /&gt;
But that's Microsoft: shiny outside, no new ideas inside.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6231780375587691641?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/ry9dEr4FHuc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6231780375587691641/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/future-from-microsoft.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6231780375587691641?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6231780375587691641?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/ry9dEr4FHuc/future-from-microsoft.html" title="Future from Microsoft" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/a6cNdhOKwi0/default.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/future-from-microsoft.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08ESXs5cSp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1177679259184547414</id><published>2011-11-18T12:04:00.000+02:00</published><updated>2011-11-28T11:16:48.529+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:16:48.529+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>TYPO3 developers, say "no" to memory leaks!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aZtuNGJQ6C9qn7W4mWnGT1F2erk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aZtuNGJQ6C9qn7W4mWnGT1F2erk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aZtuNGJQ6C9qn7W4mWnGT1F2erk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aZtuNGJQ6C9qn7W4mWnGT1F2erk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There is one small mistake I often see in TYPO3 extensions that I review. It is related to freeing resources after you have done with them. Many people forget to do that. PHP is a language where you do not have to free memory. That's true. But resources (such as file handles, recordset, etc) are different. You have to close them explicitly! PHP may close file for you sometimes but even that is not guaranteed. &lt;br /&gt;
Let's see the problematic code:&lt;br /&gt;
&lt;div class="csc-frame-frame1"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;function memoryLeakingGetDatabaseRow() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $resource = $GLOBALS['TYPO3_DB']-&amp;gt;exec_SELECTquery(...);&lt;br /&gt;&amp;nbsp; &amp;nbsp; return $GLOBALS['TYPO3_DB']-&amp;gt;sql_fetch_assoc($resource);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;
What is wrong here? This code fetches a recordset from the database but does not free it. This means that all structures MySQL had to prepare live in memory. This may include portions of the data retrieved from the database. That data lives for the whole request. If you make multiple calls you accumulate more and more such data in memory. That leaves less memory for other processes on the server. This data is tied to the database connection. If you have persistent database connections, this data is not released when your script terminates because the connection is not released. Thus you have data accumulating all the time. The result is slow down of the server after a certain period of time (low memory means more swapping and that is slow).&lt;br /&gt;
How this can be prevented? Code:&lt;br /&gt;
&lt;div class="csc-frame-frame1"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;function memoryLeakingGetDatabaseRow() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $resource = $GLOBALS['TYPO3_DB']-&amp;gt;exec_SELECTquery(...);&lt;br /&gt;&amp;nbsp; &amp;nbsp; $row = $GLOBALS['TYPO3_DB']-&amp;gt;sql_fetch_assoc($resource);&lt;br /&gt;&amp;nbsp; &amp;nbsp; $GLOBALS['TYPO3_DB']-&amp;gt;sql_free_result($resource);&lt;br /&gt;&amp;nbsp; &amp;nbsp; return $row;&lt;/span&gt;&lt;/div&gt;
&lt;div class="csc-frame-frame1"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/div&gt;
This releases the recordset properly and frees all allocated memory.&lt;br /&gt;
[Note: of course, for a single result you can use exec_SELECTgetSingle but the point of this article was to show the problem and the solution]&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1177679259184547414?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/bNFa_nlp0LU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1177679259184547414/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/typo3-developers-say-to-memory-leaks.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1177679259184547414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1177679259184547414?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/bNFa_nlp0LU/typo3-developers-say-to-memory-leaks.html" title="TYPO3 developers, say &amp;quot;no&amp;quot; to memory leaks!" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>7</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/typo3-developers-say-to-memory-leaks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GSXg8fip7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-8959597593499960880</id><published>2011-11-17T09:50:00.000+02:00</published><updated>2011-11-28T11:17:08.676+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:17:08.676+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>How I came to TYPO3</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KO7-RzTLLp8cycgAkVvlt9KUH64/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KO7-RzTLLp8cycgAkVvlt9KUH64/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KO7-RzTLLp8cycgAkVvlt9KUH64/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KO7-RzTLLp8cycgAkVvlt9KUH64/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
In the comment to my &lt;link -="" internal-link="" record:tt_news:416=""&gt;previous article, I was asked how did I come to TYPO3. Here is the answer.&lt;br&gt;
Me and my wife have a project in our country. The project has started in January 2001 as a set of static pages and grew to a large family portal with elements of a social network.&lt;br&gt;
In 2001 it was just a diary, which my wife made online. Blogging was not a hot area at that time but she was blogging. People came and read, they were interested. So she asked me to make a forum on the site. So there was a forum. People asked for more: they wanted more articles, more information. The amount of information grew.&lt;br&gt;
In 2003 we had our own rudimentary CMS. It allowed to manage pages and connect them to menu items. So menu structure was separate and pages were separate. Menu could be two levels deep maximum. The CMS was simple and fast, it could run on inexpensive shared hosting with a very limited CPU power, memory and disk space.&lt;br&gt;
Number of articles grew and navigation became harder because we needed more nesting levels and greater editing capabilities. I worked full time on my daily job, so I could not create a “full force” CMS. I started to look around. I went to the opensourcecms.com and tried several CMSes there. At that time there was only one CMS there, which I more or less liked: Mambo (now it is called Joomla). TYPO3 also was there but the text said something like “the system is too heavy and complex to be installed as demo”.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/11/how-i-came-to-typo3.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-8959597593499960880?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/vLecNSqq9iA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/8959597593499960880/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/how-i-came-to-typo3.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8959597593499960880?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8959597593499960880?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/vLecNSqq9iA/how-i-came-to-typo3.html" title="How I came to TYPO3" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>13</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/how-i-came-to-typo3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08HRns-cCp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6853790495407603508</id><published>2011-11-15T14:26:00.000+02:00</published><updated>2011-11-28T11:17:17.558+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:17:17.558+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Looking back at my professional life</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3gACY0vmH5-Q0m8cjU_uezl1wk8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3gACY0vmH5-Q0m8cjU_uezl1wk8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3gACY0vmH5-Q0m8cjU_uezl1wk8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3gACY0vmH5-Q0m8cjU_uezl1wk8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I am 38, which is an age when people start looking back and see what they went through and evaluate their path. So do I. I am a software developer and I was like that for all past years. Have a look back with me.&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/11/looking-back-at-my-professional-life.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6853790495407603508?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/omma-vLiYTU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6853790495407603508/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/looking-back-at-my-professional-life.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6853790495407603508?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6853790495407603508?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/omma-vLiYTU/looking-back-at-my-professional-life.html" title="Looking back at my professional life" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/looking-back-at-my-professional-life.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08BR3k9eyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6306668977131578455</id><published>2011-11-07T09:00:00.000+02:00</published><updated>2011-11-28T11:17:36.763+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:17:36.763+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spam" /><title>Does your blog/forum help spammers?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/86-T6TOcisQpCWh14alLWg_0CAU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/86-T6TOcisQpCWh14alLWg_0CAU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/86-T6TOcisQpCWh14alLWg_0CAU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/86-T6TOcisQpCWh14alLWg_0CAU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Do you know that your blog or forum may help spammers to gather e-mail addresses of commenters even if you hide their e-mail addresses?&lt;br /&gt;
&lt;br /&gt;
Recently I discovered one interesting blog and made a comment on one post. There was a checkbox to subscribe to updates of comments. I ticked that because I was interested in the topic. When comments started to come to my e-mail, I noticed that they were sent from the e-mail address of people, who commented. E-mails were hidden in the blog but as soon as you subscribe to comments, you get e-mail addresses of all commenters. That would help spammers a lot if the blog uses Gravatar service for user pictures. Gravatar binds e-mail addresses to pictures. Blogs can show pictures of users if the user provided a valid e-mail address. Thus, if the blog is known to use Gravatar, many users will supply a real valid e-mail. Here you get spammers subscribing and catching a lot of valid e-mails. &lt;i&gt;&lt;b&gt;Update/clarification:&lt;/b&gt; this is not a problem of Gravatar! This is your blogging software that can send such e-mails. Gravatar only shows pictures and it is not vulnerable at all.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
There is another view on this problem: the blog says that e-mail address will not be revealed but, in fact, it reveals the address. So it may have legal privacy implications. I notified blog's owner about the issue.&lt;br /&gt;
Conclusion: never use user's e-mail to send anything from the web site.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6306668977131578455?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/P9FBoCMCHJE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6306668977131578455/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/does-your-blogforum-help-spammers.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6306668977131578455?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6306668977131578455?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/P9FBoCMCHJE/does-your-blogforum-help-spammers.html" title="Does your blog/forum help spammers?" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/does-your-blogforum-help-spammers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08MQ3k8eSp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-5484467047152028923</id><published>2011-10-24T09:00:00.000+03:00</published><updated>2011-11-28T11:18:02.771+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:18:02.771+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Backend search improvements in TYPO3 4.6</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jH_a6S0fY6CXByX4HnuAzSfj8fs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jH_a6S0fY6CXByX4HnuAzSfj8fs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jH_a6S0fY6CXByX4HnuAzSfj8fs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jH_a6S0fY6CXByX4HnuAzSfj8fs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div&gt;
TYPO3 4.6 brings a lot of great enhancements. I would not tell you all of them in this post but you will learn about one of them. The reason to choose this enhancement is that it has a certain effects on TYPO3 extensions. Extension authors need to be aware of this change and adjust their extensions accordingly.&lt;br&gt;
The enhancement I mean is an improvement of the Backend search. What was wrong with the old search? The old search worked like this:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Take all numeric fields and add them to the list of searchable fields (including uid and date/time fields)&lt;/li&gt;
&lt;li&gt;Take all input and text fields and add them to the list (including, for example TSConfig field)&lt;/li&gt;
&lt;li&gt;Use &lt;span class="inline-code" style="font-family: &amp;#39;Courier New&amp;#39;, Courier, monospace;"&gt;LIKE %...%&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Search every table in the database if the table is in &lt;span class="inline-code"&gt;$TCA&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Search 4 levels deep maximum but never say it to anybody. So people would wonder why can&amp;#39;t they find results deep in the tree.&lt;/li&gt;
&lt;/ul&gt;
That causes too many fields to search for each table (most of them unnecessary). Also it searches numeric fields for string patterns using &lt;span class="inline-code"&gt;LIKE&lt;/span&gt;, which is a very slow operation. In case if there are many extensions installed, searching could take minutes.&lt;br&gt;
&lt;br&gt;
What was changed? The search was adjusted to work like this:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Use only specially configured fields for search (i.e. we can search &amp;quot;bodytext&amp;quot; field but generally there is no need to search &amp;quot;TSConfig&amp;quot; or &lt;span class="inline-code"&gt;i18n_diffsource&lt;/span&gt; field)&lt;/li&gt;
&lt;li&gt;Use numeric fields in search only if search phrase is numeric&lt;/li&gt;
&lt;li&gt;Skip tables that are not configured in &lt;span class="inline-code"&gt;$TCA&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Search regardless of pid unless searching &amp;quot;current page only&amp;quot; from the List module.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/10/backend-search-improvements-in-typo3-46.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-5484467047152028923?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/txTSGl945SM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/5484467047152028923/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/10/backend-search-improvements-in-typo3-46.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5484467047152028923?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5484467047152028923?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/txTSGl945SM/backend-search-improvements-in-typo3-46.html" title="Backend search improvements in TYPO3 4.6" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/10/backend-search-improvements-in-typo3-46.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08MQ3k8eyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-7943272031479577631</id><published>2011-10-23T10:41:00.000+03:00</published><updated>2011-11-28T11:18:02.773+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:18:02.773+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Using TYPO3 for blogging</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U8zMaruUe3BFfR4M4kkFx5YWNoU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U8zMaruUe3BFfR4M4kkFx5YWNoU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U8zMaruUe3BFfR4M4kkFx5YWNoU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U8zMaruUe3BFfR4M4kkFx5YWNoU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
From time to time I see questions in the TYPO3 mailing list about using TYPO3 got blogging. Since I have a blog made with TYPO3, I am going to compare several solutions and describe their advantages and disadvantages. I also share my own views on choosing the best blogging tool.&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/10/using-typo3-for-blogging.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-7943272031479577631?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/g_rTIkfR6LY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/7943272031479577631/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/10/using-typo3-for-blogging.html#comment-form" title="12 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7943272031479577631?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7943272031479577631?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/g_rTIkfR6LY/using-typo3-for-blogging.html" title="Using TYPO3 for blogging" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>12</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/10/using-typo3-for-blogging.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04GQHs9fCp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-54913838721843446</id><published>2011-10-13T10:37:00.000+03:00</published><updated>2011-11-28T11:18:41.564+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:18:41.564+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>"Your computer was restarted because of a problem"</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dBEETvxeNRg2IBo9mMAj6aDpVq8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dBEETvxeNRg2IBo9mMAj6aDpVq8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dBEETvxeNRg2IBo9mMAj6aDpVq8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dBEETvxeNRg2IBo9mMAj6aDpVq8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;That message appeared each time after I restarted my MacBook Pro. It looks like a flag was written somewhere that this message should be displayed. While it takes a simple click to get rid of the message, I wanted to get rid of it once and forever. After a small search in Terminal I found how to fix it:&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;Open Terminal (use Spotlight to find it)&lt;/li&gt;&lt;li&gt;Type &lt;span class="inline-code"&gt;sudo rm /var/db/PanicReporter/current.panic&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;That's all. You can now reboot without errors.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-54913838721843446?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/sVOn1vvK-hQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/54913838721843446/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/10/computer-was-restarted-because-of.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/54913838721843446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/54913838721843446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/sVOn1vvK-hQ/computer-was-restarted-because-of.html" title="&amp;quot;Your computer was restarted because of a problem&amp;quot;" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/10/computer-was-restarted-because-of.html</feedburner:origLink></entry></feed>

