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

<channel>
	<title>ялабуми™</title>
	<atom:link href="http://ashvetsov.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ashvetsov.wordpress.com</link>
	<description>Разработчик. Всесторонний.</description>
	<lastBuildDate>Tue, 20 Oct 2009 14:34:08 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='ashvetsov.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/8022b22181894239afc1d02789895a4a?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>ялабуми™</title>
		<link>http://ashvetsov.wordpress.com</link>
	</image>
			<item>
		<title>JavaScript и replaceall</title>
		<link>http://ashvetsov.wordpress.com/2009/10/20/javascript-%d0%b8-replaceall/</link>
		<comments>http://ashvetsov.wordpress.com/2009/10/20/javascript-%d0%b8-replaceall/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 14:32:52 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=164</guid>
		<description><![CDATA[Как ни странно, но конструкция вида:

var string = &#34;find this and find that&#34;.replace(&#34;find&#34;, &#34;found&#34;);

получит на выходе &#171;found this and find that&#187;. Но не надо никаких циклов, что бы сделать правильно, достаточно простого регекспа (точнее модификатора &#8216;g&#8217;):

var string = &#34;find this and find that&#34;.replace(/find/g, &#34;found&#34;);

и в итоге &#8211; все нашли &#8211; &#171;found this and found that&#187;.
Posted [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=164&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Как ни странно, но конструкция вида:</p>
<pre class="brush: jscript;">
var string = &quot;find this and find that&quot;.replace(&quot;find&quot;, &quot;found&quot;);
</pre>
<p>получит на выходе &laquo;found this and find that&raquo;. Но не надо никаких циклов, что бы сделать правильно, достаточно простого регекспа (точнее модификатора &#8216;g&#8217;):</p>
<pre class="brush: jscript;">
var string = &quot;find this and find that&quot;.replace(/find/g, &quot;found&quot;);
</pre>
<p>и в итоге &#8211; все нашли &#8211; &laquo;found this and found that&raquo;.</p>
Posted in JavaScript, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=164&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/10/20/javascript-%d0%b8-replaceall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Немного об Objective-C и Cocoa</title>
		<link>http://ashvetsov.wordpress.com/2009/10/09/%d0%bd%d0%b5%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d0%be%d0%b1-objective-c-%d0%b8-cocoa/</link>
		<comments>http://ashvetsov.wordpress.com/2009/10/09/%d0%bd%d0%b5%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d0%be%d0%b1-objective-c-%d0%b8-cocoa/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 17:31:35 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=136</guid>
		<description><![CDATA[Так получилось, что хоть я и сторонник технологий Microsoft, последние два-три года я являюсь Mac-пользователем, а последний год &#8211; Mac является моим основным рабочим ноутбуком. Для .Net я разрабатываю в виртуальной машине, а Python, Mono, впрочем как и много чего другого &#8211; нативно.
Но заинтересовался я и Objective-C, надо же заниматься саморазвитием +) Итак начну по [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=136&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Так получилось, что хоть я и сторонник технологий Microsoft, последние два-три года я являюсь Mac-пользователем, а последний год &#8211; Mac является моим основным рабочим ноутбуком. Для .Net я разрабатываю в виртуальной машине, а Python, Mono, впрочем как и много чего другого &#8211; нативно.<br />
Но заинтересовался я и Objective-C, надо же заниматься саморазвитием +) Итак начну по порядку, первым делом я пошел на официальный сайт и вошел в Developer&#8217;s Zone, где нашел статью какраз для меня &#8211; <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/01Introduction.html">Introduction to Cocoa</a>, пролистал и, откровенно говоря, объема статьи для понимания мне абсолютно не хватило. В итоге открыл Google, Xcode и начал писать&#8230;<br />
<span id="more-136"></span>Objective-C &#8211; объектно-ориентированный язык, похож на Smalltalk, и в корне отличается от всего с чем я имел дело раньше. Главное отличие &#8211; сообщения. В Objective-C мы не вызываем метод, а шлем объекту сообщение. Как же это выглядит? Примерно так:</p>
<pre class="brush: java;">
[ialubimii learnNewProgrammingLang:@&quot;Objective-C&quot; toLevel:5];
</pre>
<p>Здесь <em>ialubimii</em> &#8211; объект, то есть я, и мне отправляется сообщение учить Objective-C до уровня 5. Но изучить язык я пока не могу, а что бы я мог обработать такое сообщение, я должен иметь для него селектор, который сможет получить и обработать это сообщение. Но для начала нам надо создать меня, экземпляр класса CProgrammer &#8211; наследника CHuman.<br />
Классы в Objective-C определяются в двух файлах &#8211; .h и .m, первый &#8211; заголовок в котором прописывается <em>@interface</em>, второй &#8211; имплементация.</p>
<blockquote><p>
<strong>CHuman.h</strong></p>
<pre class="brush: java;">
// Импортируем главный заголовочный файл Cocoa:
#import &lt;Cocoa/Cocoa.h&gt;

// Объявляем класс и наследуем его от NSObject, базового объекта Cocoa:
@interface CHuman : NSObject {
    // Объявляем защищенные переменные:
    //   1. Ссылка на экземпляр строки NSString;
    NSString *name;
    //   2. Переменная NSInteger.
    NSInteger age;
}
// Объявляем публичные свойства нашего класса:
//   1. readwrite определяет тип доступ;
//   2. retain говорит о том, что тип ссылочный и нам
//       нужно удалять ссылки при удалении самого
//       объекта.
@property (readwrite, retain) NSString *name;
@property (readwrite) NSInteger age;

@end
</pre>
<p><strong>CHuman.m</strong></p>
<pre class="brush: java;">
// Импортируем наш заголовок:
#import &quot;CHuman.h&quot;

// Объявляем имплементацию класса:
@implementation CHuman
// Говорим компилятору, что хотим синтезировать
// код для свойств name и age:
@synthesize name, age;
@end
</pre>
</blockquote>
<p>Теперь определим класс-наследник <em>CHuman</em> &#8211; <em> CProgrammer </em>, который будет определять программиста, именно класс <em>CProgrammer</em> будет уметь принимать сообщения <em>learnNewProgrammingLang:toLevel</em>, а заодно иметь словарь своих знаний:</p>
<blockquote><p>
<strong>CProgrammer.h</strong></p>
<pre class="brush: java;">
#import &lt;Cocoa/Cocoa.h&gt;
// Импортируем заголовок класса CHuman для наследования:
#import &lt;CHuman.h&gt;

@interface CMan : CProgrammer {
    // Определяем словарь знаний нашего программиста:
    NSMutableDictionary *programmingSkills;
    // NSMutableDictionary является динамическим аналогом
    // NSDictionary.
}
@property (readwrite, retain) NSMutableDictionary *programmingSkills;

// Определяем заголовок селектора для сообщения:
-(void)learnNewProgrammingLang:(NSString*)name toLevel:(NSInteger)level;

@end
</pre>
<p><strong>CProgrammer.m</strong></p>
<pre class="brush: java;">
#import &quot;CProgrammer.h&quot;

@implementation CProgrammer
@synthesize programmingSkills;
// Реализуем конструктор и деструктор, это необходимо
// для инициализации и уничтожения нашего словаря.
-(id)init {
    // Вызываем супер-конструктор.
    self = [super init];
    // Выделяем память и создаем словарь на 20 записей:
    programmingSkills = [[NSMutableDictionary alloc] initWithCapacity:20];
    // Здесь используется вложенное сообщение, то есть
    // сначала мы выделяем память под NSMutableDictionary
    // с помощью сообщения alloc, а затем инициализируем
    // экземпляр с помощью конструктора init.
    return self;
}
-(void)dealloc {
    // Удаляем наш словарь:
    // Вызываем супер-деструктор:
    [super dealloc];
}

// Реализуем объявленный в заголовке селектор:
-(void)learnNewProgrammingLang:(NSString*)name toLevel:(NSInteger)level {
    // Сохраняем сообщение в словарь знаний,
    // таким образом наш программист теперь
    // сможет запоминать то что он учит:
    [programmingSkills setValue:level forKey:name];
}
@end
</pre>
</blockquote>
<p>Теперь необходимые классы готовы и мы можем использовать их в нашем приложении:</p>
<pre class="brush: java;">
// Создаем экземпляр программиста-меня:
CProgrammer *ialubimii = [[CProgrammer alloc] init];
// А теперь мы можем послать сообщение, которое
// я смогу получить и обработать, выучив Objective-C.
[ialubimii learnNewProgrammingLang:@&quot;Objective-C&quot; toLevel:5];
</pre>
<p>А скоро я расскажу о своем небольшом проекте, разрабатываемом на Objective-C, а так же об XCode, Interface Builder&#8230; Вообщем о том, как создаются приложения под Mac на Cocoa.</p>
Posted in Cocoa, Objective-C, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=136&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/10/09/%d0%bd%d0%b5%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d0%be%d0%b1-objective-c-%d0%b8-cocoa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>ExpandoObject или &#171;Зачем из C# делают динамически типизированный язык?&#187;</title>
		<link>http://ashvetsov.wordpress.com/2009/10/06/expandoobject-%d0%b8%d0%bb%d0%b8-%d0%b7%d0%b0%d1%87%d0%b5%d0%bc-%d0%b8%d0%b7-c-%d0%b4%d0%b5%d0%bb%d0%b0%d1%8e%d1%82-%d0%b4%d0%b8%d0%bd%d0%b0%d0%bc%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8-%d1%82%d0%b8/</link>
		<comments>http://ashvetsov.wordpress.com/2009/10/06/expandoobject-%d0%b8%d0%bb%d0%b8-%d0%b7%d0%b0%d1%87%d0%b5%d0%bc-%d0%b8%d0%b7-c-%d0%b4%d0%b5%d0%bb%d0%b0%d1%8e%d1%82-%d0%b4%d0%b8%d0%bd%d0%b0%d0%bc%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8-%d1%82%d0%b8/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 11:51:53 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=128</guid>
		<description><![CDATA[Сейчас в Visual C# Highlights последним постом висит &#171;Introducing the Expando Object&#187;. Это, наверное, третий или четвертый пост про DLR (Dynamic Language Runtime), но лично для меня самый пугающий.
Посмотрим на пример (кстати, не так давно я описывал &#171;Enumerator в Python&#187;):

dynamic contact = new ExpandoObject();
contact.Name = &#34;Alexander Shvetsov&#34;;
contact.Location = &#34;Moscow, Russian Federation&#34;;

Выглядит вполне невинно. Тем более [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=128&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Сейчас в Visual C# Highlights последним постом висит <a href="http://blogs.msdn.com/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the-expandoobject.aspx">&laquo;Introducing the Expando Object&raquo;</a>. Это, наверное, третий или четвертый пост про DLR (Dynamic Language Runtime), но лично для меня самый пугающий.<br />
Посмотрим на пример (кстати, не так давно я описывал <a href="/2009/07/30/enumerator-в-python/">&laquo;Enumerator в Python&raquo;</a>):</p>
<pre class="brush: csharp;">
dynamic contact = new ExpandoObject();
contact.Name = &quot;Alexander Shvetsov&quot;;
contact.Location = &quot;Moscow, Russian Federation&quot;;
</pre>
<p><span id="more-128"></span>Выглядит вполне невинно. Тем более что по сути своей это не многим больше чем оболочка для:</p>
<pre class="brush: csharp;">
Dictionary&lt;string, object&gt; contact = new Dictionary&lt;string, object&gt;();
contact.Add(&quot;Name&quot;, &quot;Alexander Shvetsov&quot;);
contact.Add(&quot;Location&quot;, &quot;Moscow, Russian Federation&quot;);
</pre>
<p>Но к чему это может привести? По мнению MS:</p>
<ul>
<li>Более тесной интеграции с динамически типизированными языками;</li>
<li>Простоте использования.</li>
</ul>
<p>Трудно с чем-либо поспорить, но вот от себя очень хотелось бы добавить:</p>
<ul>
<li>Снижению и без того низкой планки вхождения до уровня Python&#8217;а;</li>
<li>Значительному уменьшению стабильности кода;</li>
<li>Появлению противников со стороны сообщества.</li>
</ul>
<p>Кстати один противник в лице меня уже появился. Но ведь можно его (DLR) просто не использовать +)</p>
Posted in C#, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=128&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/10/06/expandoobject-%d0%b8%d0%bb%d0%b8-%d0%b7%d0%b0%d1%87%d0%b5%d0%bc-%d0%b8%d0%b7-c-%d0%b4%d0%b5%d0%bb%d0%b0%d1%8e%d1%82-%d0%b4%d0%b8%d0%bd%d0%b0%d0%bc%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8-%d1%82%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Уменьшение лога транзакций (Shrink transaction log) в MSSQL</title>
		<link>http://ashvetsov.wordpress.com/2009/09/23/%d1%83%d0%bc%d0%b5%d0%bd%d1%8c%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d0%be%d0%b3%d0%b0-%d1%82%d1%80%d0%b0%d0%bd%d0%b7%d0%b0%d0%ba%d1%86%d0%b8%d0%b9-shrink-transaction-log-%d0%b2-mssql/</link>
		<comments>http://ashvetsov.wordpress.com/2009/09/23/%d1%83%d0%bc%d0%b5%d0%bd%d1%8c%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d0%be%d0%b3%d0%b0-%d1%82%d1%80%d0%b0%d0%bd%d0%b7%d0%b0%d0%ba%d1%86%d0%b8%d0%b9-shrink-transaction-log-%d0%b2-mssql/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 13:30:28 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=124</guid>
		<description><![CDATA[Иногда случается что большие транзакции могут зависнуть (эксепшны, аварийный выход), в таком случае Transaction Log может вырастать до неимоверных размеров &#8211; иногда соизмеримыми с объемом данных. Если лог все же не нужен, уменьшить его объем можно простой командой SHRINKFILE:

USE [MyDatabase];
BACKUP LOG [MyDatabase] WITH TRUNCATE_ONLY;
DBCC SHRINKFILE(MyDatabase_Log, 10)
GO

В гугле почему-то очень трудно найти внятный пример использования.
Posted in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=124&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Иногда случается что большие транзакции могут зависнуть (эксепшны, аварийный выход), в таком случае Transaction Log может вырастать до неимоверных размеров &#8211; иногда соизмеримыми с объемом данных. Если лог все же не нужен, уменьшить его объем можно простой командой SHRINKFILE:</p>
<pre class="brush: sql;">
USE [MyDatabase];
BACKUP LOG [MyDatabase] WITH TRUNCATE_ONLY;
DBCC SHRINKFILE(MyDatabase_Log, 10)
GO
</pre>
<p>В гугле почему-то очень трудно найти внятный пример использования.</p>
Posted in Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=124&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/09/23/%d1%83%d0%bc%d0%b5%d0%bd%d1%8c%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d0%be%d0%b3%d0%b0-%d1%82%d1%80%d0%b0%d0%bd%d0%b7%d0%b0%d0%ba%d1%86%d0%b8%d0%b9-shrink-transaction-log-%d0%b2-mssql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Задача на внимательность</title>
		<link>http://ashvetsov.wordpress.com/2009/09/01/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b0-%d0%bd%d0%b0-%d0%b2%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d1%8c/</link>
		<comments>http://ashvetsov.wordpress.com/2009/09/01/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b0-%d0%bd%d0%b0-%d0%b2%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d1%8c/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 06:17:27 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[Logic]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=117</guid>
		<description><![CDATA[Если задача об идентификаторах была скорее на логику, то вот небольшая задача на внимательность.

Как будет работать такая конструкция в C#?

while (value --&#62; 0)
{
    ...
}


Одним словом, что делает такая стрелочка?
Posted in Logic, Programming       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=117&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Если <a href="http://ashvetsov.wordpress.com/2009/08/04/задача-на-собеседование/">задача об идентификаторах</a> была скорее на логику, то вот небольшая задача на внимательность.</p>
<blockquote><p>
Как будет работать такая конструкция в C#?</p>
<pre class="brush: csharp;">
while (value --&gt; 0)
{
    ...
}
</pre>
</blockquote>
<p>Одним словом, что делает такая стрелочка?</p>
Posted in Logic, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=117&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/09/01/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b0-%d0%bd%d0%b0-%d0%b2%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d1%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Разные модификаторы для get и set в C#</title>
		<link>http://ashvetsov.wordpress.com/2009/08/25/%d1%80%d0%b0%d0%b7%d0%bd%d1%8b%d0%b5-%d0%bc%d0%be%d0%b4%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%be%d1%80%d1%8b-%d0%b4%d0%bb%d1%8f-get-%d0%b8-set-%d0%b2-c/</link>
		<comments>http://ashvetsov.wordpress.com/2009/08/25/%d1%80%d0%b0%d0%b7%d0%bd%d1%8b%d0%b5-%d0%bc%d0%be%d0%b4%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%be%d1%80%d1%8b-%d0%b4%d0%bb%d1%8f-get-%d0%b8-set-%d0%b2-c/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 06:17:21 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=114</guid>
		<description><![CDATA[Отнють нетривиальным можно назвать возможность выставлять различные модификаторы доступа для get и set в свойствах. Все очень просто, а между тем и очень полезно.

public string Name
{
    get { return this.name; }
    internal set { this.name = value; }
}

Update: Жаль, нельзя так же определять свойства в интерфейсах.
Posted in C#, Programming [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=114&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Отнють нетривиальным можно назвать возможность выставлять различные модификаторы доступа для get и set в свойствах. Все очень просто, а между тем и очень полезно.</p>
<pre class="brush: csharp;">
public string Name
{
    get { return this.name; }
    internal set { this.name = value; }
}
</pre>
<p><strong>Update:</strong> Жаль, нельзя так же определять свойства в интерфейсах.</p>
Posted in C#, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=114&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/08/25/%d1%80%d0%b0%d0%b7%d0%bd%d1%8b%d0%b5-%d0%bc%d0%be%d0%b4%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%be%d1%80%d1%8b-%d0%b4%d0%bb%d1%8f-get-%d0%b8-set-%d0%b2-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Url Routing в ASP.NET</title>
		<link>http://ashvetsov.wordpress.com/2009/08/10/url-routing-%d0%b2-asp-net/</link>
		<comments>http://ashvetsov.wordpress.com/2009/08/10/url-routing-%d0%b2-asp-net/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 11:27:24 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=91</guid>
		<description><![CDATA[Сейчас достаточно популярен фреймворк ASP.NET MVC. Сам по себе &#171;паттерн&#187; MVC достаточно интересен, но не всегда применим. Конечно же он накладывает множество ограничений и на разработчика, и на приложение. Но ведь иногда можно почерпнуть отдельную часть, без ущерба для кого-либо, в данном случае это механизм URL роутинга, который всемте с .Net 3.5 SP1 вошел во [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=91&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Сейчас достаточно популярен фреймворк ASP.NET MVC. Сам по себе &laquo;паттерн&raquo; MVC достаточно интересен, но не всегда применим. Конечно же он накладывает множество ограничений и на разработчика, и на приложение. Но ведь иногда можно почерпнуть отдельную часть, без ущерба для кого-либо, в данном случае это механизм URL роутинга, который всемте с .Net 3.5 SP1 вошел во фрэймворк в виде неймспейса <strong>System.Web.Routing</strong>.<br />
<span id="more-91"></span>Итак по порядку, для начала проставим все необходимые референсы и параметры в web.config:</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;configuration&gt;
    ...
    &lt;system.web&gt;
        &lt;compilation debug=&quot;true&quot;&gt;
            &lt;assemblies&gt;
                ...
                &lt;add assembly=&quot;System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
                &lt;add assembly=&quot;System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
            &lt;/assemblies&gt;
        &lt;/compilation&gt;
        ...
        &lt;httpModules&gt;
            &lt;add name=&quot;UrlRoutingModule&quot; type=&quot;System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
            ...
        &lt;/httpModules&gt;
    &lt;/system.web&gt;
    ...
    &lt;system.webServer&gt;
        &lt;modules runAllManagedModulesForAllRequests=&quot;true&quot;&gt;
            &lt;add name=&quot;UrlRoutingModule&quot; type=&quot;System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
        &lt;/modules&gt;
        ...
    &lt;/system.webServer&gt;
&lt;/configuration&gt;
</pre>
<p>Здесь мы сделали следующее:</p>
<ol>
<li>Добавили референс на <strong>System.Web.Routing</strong> в compilation/assemblies;</li>
<li>Добавили модуль <strong>UrlRoutingModule</strong> в system.web/httpModules (для поддержки ASP.NET Development Server) и в system.webServer/modules (для корректной работы IIS7);</li>
<li>Проставили значение аргумента <strong>runAllManagedModulesForAllRequests</strong> который так же необходим для корректной работы IIS7, без него мы бы получали 404 на все запросы к неизвестным типам файлов, то есть мы бы смогли роутить только запросы оканчивающиеся на *.aspx, которые IIS направляет приложению.</li>
</ol>
<p>К сожалению, установка <strong>runAllManagedModulesForAllRequests</strong> может сказаться на скорости выдачи IIS статического контента. Это вызвано тем, что IIS будет загружать все управляемые модули для всех запросов, то есть при каждом обращении к файлу изображения, будет инициализироваться <strong>ScriptModule</strong>. Поэтому на высоконагруженных системах лучше выделять отдельную сущность сайта в IIS для обработки запросов к статическому содержимому приложения.<br />
Далее нам нужен класс <strong>RouteHandler</strong>, который будет обрабатывать наши роутинги, для этого он должен реализовывать интерфейст <strong>IRouteHandler</strong>, то есть метод <strong>GetHttpHandler()</strong>, возвращающий <strong>IHttpHandler</strong>, обработающий запрос:</p>
<pre class="brush: csharp;">
using System;
using System.Web;
using System.Web.Compilation;
using System.Web.Routing;
using System.Web.UI;

/// &lt;summary&gt;
/// Represents common route handler.
/// &lt;/summary&gt;
public class RouteHandler : IRouteHandler
{
    private string path = &quot;&quot;;

    /// &lt;summary&gt;
    /// Creates and instance of route handler by
    /// virtual path.
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;VirtualPath&quot;&gt;Handler virtual path.&lt;/param&gt;
    public RouteHandler(string virtualPath)
    {
        this.path = virtualPath;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        // Copying route data to context.
        foreach (var value in requestContext.RouteData.Values)
        {
            requestContext.HttpContext.Items[value.Key] = value.Value;
        }

        return BuildManager.CreateInstanceFromVirtualPath(this.path, typeof(Page)) as Page;
    }
}
</pre>
<p>Здесь так же присутствует узкое место, а именно вызов <strong>CreateInstanceFromVirtualPath</strong>. Впрочем, оценить производительность <strong>BuildManager</strong> мне не удалось, и данное утверждение по сути является лишь предположением.<br />
Последний шаг настройки &#8211; добавление роутинга в <strong>RouteTable</strong>, для этого легче всего использовать <strong>Global.asax</strong>:</p>
<pre class="brush: csharp;">
protected void Application_Start(object sender, EventArgs e)
{
    System.Web.Routing.RouteTable.Routes.Add(
        new System.Web.Routing.Route(&quot;Users/{UserName}&quot;, new RouteHandler(&quot;~/Users.aspx&quot;)));
}
</pre>
<p>Вот и все, сама же <strong>Users.aspx</strong> может выглядеть примерно так (допустим наш запрос содержив себе так же и GET параметр &laquo;/Users/ashvetsov/?Action=Test&raquo;):</p>
<pre class="brush: csharp;">
using ...;

public partial class _Users : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Context.Items[&quot;UserName&quot;] != null) // &quot;ashvetsov&quot;
        { }

        if (Request[&quot;Action&quot;] != null) // &quot;Test&quot;
        { }
    }
}
</pre>
Posted in C#, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=91&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/08/10/url-routing-%d0%b2-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Удобный дебаггинг в C#</title>
		<link>http://ashvetsov.wordpress.com/2009/08/06/%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b4%d0%b5%d0%b1%d0%b0%d0%b3%d0%b3%d0%b8%d0%bd%d0%b3-%d0%b2-c/</link>
		<comments>http://ashvetsov.wordpress.com/2009/08/06/%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b4%d0%b5%d0%b1%d0%b0%d0%b3%d0%b3%d0%b8%d0%bd%d0%b3-%d0%b2-c/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 18:15:03 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=73</guid>
		<description><![CDATA[Просматривая нэймспейс System.Diagnostics, обнаружил много интересного, но самым интересным показался аттрибут DebuggerStepThroughAttribute. Сегодня же, нашел интересный пост посвященный тому, как применять этот аттрибут к свойствам (очень неочевидно, но логично):

public object MyProperty {
    [DebuggerStepThrough]
    get { return this.myobject; }
}

В результате же на таком вызове мы не будем проваливаться в геттер:

object [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=73&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Просматривая нэймспейс System.Diagnostics, обнаружил много интересного, но самым интересным показался аттрибут <a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggerstepthroughattribute.aspx">DebuggerStepThroughAttribute</a>. Сегодня же, нашел интересный <a href="http://www.pluralsight.com/community/blogs/craig/archive/2008/03/07/50392.aspx">пост</a> посвященный тому, как применять этот аттрибут к свойствам (очень неочевидно, но логично):</p>
<pre class="brush: csharp;">
public object MyProperty {
    [DebuggerStepThrough]
    get { return this.myobject; }
}
</pre>
<p>В результате же на таком вызове мы не будем проваливаться в геттер:</p>
<pre class="brush: csharp;">
object one = two.MyProperty;
</pre>
Posted in C#, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=73&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/08/06/%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b4%d0%b5%d0%b1%d0%b0%d0%b3%d0%b3%d0%b8%d0%bd%d0%b3-%d0%b2-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Ответ на задачу об идентификаторах</title>
		<link>http://ashvetsov.wordpress.com/2009/08/06/%d0%be%d1%82%d0%b2%d0%b5%d1%82-%d0%bd%d0%b0-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d1%83-%d0%be%d0%b1-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%be%d1%80%d0%b0%d1%85/</link>
		<comments>http://ashvetsov.wordpress.com/2009/08/06/%d0%be%d1%82%d0%b2%d0%b5%d1%82-%d0%bd%d0%b0-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d1%83-%d0%be%d0%b1-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%be%d1%80%d0%b0%d1%85/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 17:15:02 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[Logic]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=80</guid>
		<description><![CDATA[Самое производительное и ничем не ограниченное решение задачи об идентификаторах:

def Increment( string ):
    for i in range( len( string ) - 1, 0 ):
        if string[i].isdigit():
            val = int( string[i] ) + 1
  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=80&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Самое производительное и ничем не ограниченное решение <a href="http://ashvetsov.wordpress.com/2009/08/04/задача-на-собеседование/">задачи об идентификаторах</a>:</p>
<pre class="brush: python;">
def Increment( string ):
    for i in range( len( string ) - 1, 0 ):
        if string[i].isdigit():
            val = int( string[i] ) + 1
            if val == 10:
                string[i] = '0'
            else:
                string[i] = str( val )
                break
        else:
            break
    return string
</pre>
<p><span id="more-80"></span>Суть его в том, что пробегая строку от последнего символа к первому, мы проверяем цифра ли это (на C# для этого можно проверять код символа, на питоне же я использовал метод string.isdigit()) и прибавляем 1 к ней, если результат меньше 10, мы можем на этом остановиться, если же равен 10 &#8211; перейти к следующему символу. В случае же если мы достигнем префикса &#8211; мы получаем либо обнуленный идентификатор, либо можем выкинуть исключение о переполнении.</p>
<p>Преимущества этого решения в следующем:</p>
<ol>
<li>не нужно знать превикс;</li>
<li>длина строки может быть любой и не ограниченной типом используемой переменной;</li>
<li>скорость работы значительно выше чем разбор строки регулярным выражением.</li>
</ol>
<p>Даже после многочисленных подсказок, далеко не все собеседуемые смогли решить задачу.</p>
Posted in Logic, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=80&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/08/06/%d0%be%d1%82%d0%b2%d0%b5%d1%82-%d0%bd%d0%b0-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d1%83-%d0%be%d0%b1-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%be%d1%80%d0%b0%d1%85/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
		<item>
		<title>Задача на собеседование</title>
		<link>http://ashvetsov.wordpress.com/2009/08/04/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b0-%d0%bd%d0%b0-%d1%81%d0%be%d0%b1%d0%b5%d1%81%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/</link>
		<comments>http://ashvetsov.wordpress.com/2009/08/04/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b0-%d0%bd%d0%b0-%d1%81%d0%be%d0%b1%d0%b5%d1%81%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 18:43:58 +0000</pubDate>
		<dc:creator>Alexander Shvetsov</dc:creator>
				<category><![CDATA[Logic]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ashvetsov.wordpress.com/?p=66</guid>
		<description><![CDATA[Проводя собеседования я всегда давал одну из самых моих любимых задачек на логику и внимание в программировании. Задача простая:

Имеется идентификатор платежа, например INV03329993892129, нужно придумать как этот идентификатор инкрементировать и описать метод, позволяющий это сделать. Префикс постоянный. Длина идентификатора должна быть неизменна.

Жаль, что первым делом я видел лишь демонстрацию знания регулярных выражений.

Правильный ответ: http://ashvetsov.wordpress.com/2009/08/06/ответ-на-задачу-об-идентификаторах/
Posted in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=66&subd=ashvetsov&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Проводя собеседования я всегда давал одну из самых моих любимых задачек на логику и внимание в программировании. Задача простая:</p>
<blockquote><p>
Имеется идентификатор платежа, например <strong>INV03329993892129</strong>, нужно придумать как этот идентификатор инкрементировать и описать метод, позволяющий это сделать. Префикс постоянный. Длина идентификатора должна быть неизменна.
</p></blockquote>
<p>Жаль, что первым делом я видел лишь демонстрацию знания регулярных выражений.<br />
<span id="more-66"></span><br />
Правильный ответ: <a href="http://ashvetsov.wordpress.com/2009/08/06/ответ-на-задачу-об-идентификаторах/">http://ashvetsov.wordpress.com/2009/08/06/ответ-на-задачу-об-идентификаторах/</a></p>
Posted in Logic, Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ashvetsov.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ashvetsov.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ashvetsov.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ashvetsov.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ashvetsov.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ashvetsov.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ashvetsov.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ashvetsov.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ashvetsov.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ashvetsov.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ashvetsov.wordpress.com&blog=2498109&post=66&subd=ashvetsov&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ashvetsov.wordpress.com/2009/08/04/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b0-%d0%bd%d0%b0-%d1%81%d0%be%d0%b1%d0%b5%d1%81%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3a83044ec4aab94685b2cd512c44cef1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ialubimii</media:title>
		</media:content>
	</item>
	</channel>
</rss>