<?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"
	>

<channel>
	<title>Soci blog</title>
	<atom:link href="http://soci.hu/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://soci.hu/blog</link>
	<description>Az ember kivételével minden állat tudja, hogy a legfontosabb dolgunk az életben: élvezni azt.</description>
	<pubDate>Wed, 14 Jul 2010 19:27:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Blocking read kiváltása mivel?</title>
		<link>http://soci.hu/blog/index.php/2010/07/02/blocking-read-kivaltasa-mivel/</link>
		<comments>http://soci.hu/blog/index.php/2010/07/02/blocking-read-kivaltasa-mivel/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 16:44:48 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Szakmai élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1092</guid>
		<description><![CDATA[Tegyük fel írok egy tcp kliens programot, TcpClient, NetworkStream és társaival. A NetworkStream.Read blokkoló módon működik. Nekem az kell, hogy bármikor tudjam abortálni a tcp csatornát. A Read ha miatta beragad az egy szál, az Thread.Abort állítja le (igaz, az Thread.Interruptot még nem próbáltam).
Lehetséges megoldásként az async BeginReadet javasolják, de azzal meg az a bajom, [...]]]></description>
			<content:encoded><![CDATA[<p>Tegyük fel írok egy tcp kliens programot, TcpClient, NetworkStream és társaival. A NetworkStream.Read blokkoló módon működik. Nekem az kell, hogy bármikor tudjam abortálni a tcp csatornát. A Read ha miatta beragad az egy szál, az Thread.Abort állítja le (igaz, az Thread.Interruptot még nem próbáltam).</p>
<p>Lehetséges megoldásként az async BeginReadet javasolják, de azzal meg az a bajom, hogy minden kis darab olvasása után egy waithandlere kell várni, ami meg context switchet eredményez, így a nagysebességű időszakokban belassít.<br />
Mi vajon a korrekt megoldás, ami megszakítható és gyors is?</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/07/02/blocking-read-kivaltasa-mivel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Access to modified closure figyelmeztetés a Resharperben</title>
		<link>http://soci.hu/blog/index.php/2010/06/24/access-to-modified-closure-figyelmeztetes-a-resharperben/</link>
		<comments>http://soci.hu/blog/index.php/2010/06/24/access-to-modified-closure-figyelmeztetes-a-resharperben/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 16:37:31 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Szakmai élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1087</guid>
		<description><![CDATA[Már ez önmagában megéri a termék árát, máskülönben sok órát lehet debugolni a probléma miatt.
Alább a langId változó bevezetését javasolta, okkal, másképp a variable capturing beszopat. De csúnyán.


foreach (var lang in languages)
{
    var langId = lang.Value.ID;
    resStringLookup[lang.Key] = new CachedEntityLookup&#60;ResString, int, string&#62;(
        [...]]]></description>
			<content:encoded><![CDATA[<p>Már ez önmagában megéri a termék árát, máskülönben sok órát lehet debugolni a <a href="http://devnet.jetbrains.net/thread/273042;jsessionid=10749CE665899B1012373573966F7724">probléma miatt</a>.</p>
<p>Alább a langId változó bevezetését javasolta, okkal, másképp a variable capturing beszopat. De csúnyán.</p>
<pre name="code" class="c#">

foreach (var lang in languages)
{
    var langId = lang.Value.ID;
    resStringLookup[lang.Key] = new CachedEntityLookup&lt;ResString, int, string&gt;(
        rs =&gt; rs.ResStringIntID, //Kulcs a resid
        rs =&gt; rs.TransText,     //A tartalom a lokalizált szöveg
        rs =&gt; rs.LanguageID == langId);  //Ehhez a nyelvhez építjük fel a táblát
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/06/24/access-to-modified-closure-figyelmeztetes-a-resharperben/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tőzsde: Analysis of the &#8220;Flash Crash&#8221;  Date of Event: May 6, 2010</title>
		<link>http://soci.hu/blog/index.php/2010/06/23/tozsde-analysis-of-the-flash-crash-date-of-event-may-6-2010/</link>
		<comments>http://soci.hu/blog/index.php/2010/06/23/tozsde-analysis-of-the-flash-crash-date-of-event-may-6-2010/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 21:30:23 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[Tőzsde]]></category>

		<category><![CDATA[Élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1084</guid>
		<description><![CDATA[Informatikai elemzés, mitől volt a tőzsdebeszakadás.
Egészen megdöbbentő. Kb. arról szól, hogy a New Yorki tőzsdéről elkezdtek késni az adatok, amitől megborult a tőzsdék közötti, legjobb árat szabályozó replikációs rendszer. A késés oka az lehetett, hogy túlterhelődött a tőzsde adatelosztója, és az ajánlatok időbélyegét (elég furcsa módon) nem az ajánlat beadásakor írják be, hanem amikor kijön [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nanex.net/20100506/FlashCrashAnalysis_Intro.html">Informatikai elemzés</a>, mitől volt a tőzsdebeszakadás.<br />
Egészen megdöbbentő. Kb. arról szól, hogy a New Yorki tőzsdéről elkezdtek késni az adatok, amitől megborult a tőzsdék közötti, legjobb árat szabályozó replikációs rendszer. A késés oka az lehetett, hogy túlterhelődött a tőzsde adatelosztója, és az ajánlatok időbélyegét (elég furcsa módon) nem az ajánlat beadásakor írják be, hanem amikor kijön a csőből. Emiatt kívülről nem látszik a csúszás. De ami érdekesebb, mitől dugult be a tőzsde?<br />
Ma már nagyon sok nagyfrekvenciás algoritmus fut, amelyek már ms alatti idők alatt döntenek és reagálnak (ezek a szerverek a tőzsde LAN-ján vannak, nagyon közel a fő számítógépek hálózatához, így a hálózati késeltetés csak mikrosec nagyságrendű).<br />
Ezek egymással persze versenyeznek. És itt jön a buli. Valamelyik algoritmus elkezd mpeknként több ezer ajánlatot beküldeni. Ő persze nem elemzi ezeket, hisz ő küldte be. De a többiek ezt elemzik, és amíg ezzel töltik az időt, ő ráér kisajtolni a profitot. Spamelik a tőzsdét. Ez persze destabilizálja az egész rendszert. A skynet ébredezik.</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/06/23/tozsde-analysis-of-the-flash-crash-date-of-event-may-6-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Best Practices: How to implement INotifyPropertyChanged right?</title>
		<link>http://soci.hu/blog/index.php/2010/06/17/best-practices-how-to-implement-inotifypropertychanged-right/</link>
		<comments>http://soci.hu/blog/index.php/2010/06/17/best-practices-how-to-implement-inotifypropertychanged-right/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 21:21:15 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Szakmai élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1080</guid>
		<description><![CDATA[Jó összefoglaló a témában.
Update: ez lett a vége:


using System.ComponentModel;
using System.Threading;
using Krs.Ats.IBNet;

namespace ATS.IB
{
    /// &#60;summary&#62;
    /// Real-time data descriptor for IB tick data
    /// &#60;/summary&#62;
    public class MarketData : INotifyPropertyChanged
    {
        public Contract IBContract [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://compositeextensions.codeplex.com/Thread/View.aspx?ThreadId=53731">Jó összefoglaló</a> a témában.</p>
<p>Update: ez lett a vége:</p>
<pre name="code" class="c#">

using System.ComponentModel;
using System.Threading;
using Krs.Ats.IBNet;

namespace ATS.IB
{
    /// &lt;summary&gt;
    /// Real-time data descriptor for IB tick data
    /// &lt;/summary&gt;
    public class MarketData : INotifyPropertyChanged
    {
        public Contract IBContract { get; set; }
        public Ticker Ticker { get; set; }

        private decimal lastPrice;
        public decimal LastPrice
        {
            get { return lastPrice; }
            set
            {
                lastPrice = value;
                OnPropertyChanged(LastPriceChangedArgs);
            }
        }

        private decimal lastBid;
        public decimal LastBid
        {
            get { return lastBid; }
            set
            {
                lastBid = value;
                OnPropertyChanged(LastBidChangedArgs);
            }
        }

        private decimal lastAsk;
        public decimal LastAsk
        {
            get { return lastAsk; }
            set
            {
                lastAsk = value;
                OnPropertyChanged(LastAskChangedArgs);
            }
        }

        private int lastSize;
        public int LastSize
        {
            get { return lastSize; }
            set
            {
                lastSize = value;
                OnPropertyChanged(LastSizeChangedArgs);
            }
        }

        private int lastAskSize;
        public int LastAskSize
        {
            get { return lastAskSize; }
            set
            {
                lastAskSize = value;
                OnPropertyChanged(LastAskSizeChangedArgs);
            }
        }

        private int lastBidSize;
        public int LastBidSize
        {
            get { return lastBidSize; }
            set
            {
                lastBidSize = value;
                OnPropertyChanged(LastBisSizeChangedArgs);
            }
        }

        private static readonly PropertyChangedEventArgs LastPriceChangedArgs = ObservableHelper.CreateArgs&lt;MarketData&gt;(x =&gt; x.LastPrice);
        private static readonly PropertyChangedEventArgs LastBidChangedArgs = ObservableHelper.CreateArgs&lt;MarketData&gt;(x =&gt; x.LastBid);
        private static readonly PropertyChangedEventArgs LastAskChangedArgs = ObservableHelper.CreateArgs&lt;MarketData&gt;(x =&gt; x.LastAsk);
        private static readonly PropertyChangedEventArgs LastSizeChangedArgs = ObservableHelper.CreateArgs&lt;MarketData&gt;(x =&gt; x.LastSize);
        private static readonly PropertyChangedEventArgs LastBisSizeChangedArgs = ObservableHelper.CreateArgs&lt;MarketData&gt;(x =&gt; x.LastBidSize);
        private static readonly PropertyChangedEventArgs LastAskSizeChangedArgs = ObservableHelper.CreateArgs&lt;MarketData&gt;(x =&gt; x.LastAskSize);

        private void OnPropertyChanged(PropertyChangedEventArgs e)
        {
            var eventHandler = PropertyChanged;
            if (eventHandler != null)
            {
                if (guiSyncContext != SynchronizationContext.Current)
                {
                    guiSyncContext.CallOnMainThread(OnPropertyChanged, e);
                }
                else
                {
                    eventHandler(this, e);
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private SynchronizationContext guiSyncContext = SynchronizationContext.Current;

        public void SetGuiSyncContext()
        {
            guiSyncContext = SynchronizationContext.Current;
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/06/17/best-practices-how-to-implement-inotifypropertychanged-right/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Elkúrtuk, nem kicsit, nagyon</title>
		<link>http://soci.hu/blog/index.php/2010/06/07/elkurtuk-nem-kicsit-nagyon/</link>
		<comments>http://soci.hu/blog/index.php/2010/06/07/elkurtuk-nem-kicsit-nagyon/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 07:49:31 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[Tőzsde]]></category>

		<category><![CDATA[Élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1076</guid>
		<description><![CDATA[Kósa shortol:

Bmeg, ezeknek szerintem elment az esze. Vagy tényleg shortolnak. Nem tudom, melyik a veszélyesebb.
Ami leginkább felháborít a dologban, az az, hogy nem vállalják a felelősséget a szavaikért. Á, miattunk nem esik a tőzsde. Persze, hogy most az egész világban idegesek a befektetők, morog a maci, de pont ilyenkor kell ésszel beszélni.
Mint a kisgyerek, amikor [...]]]></description>
			<content:encoded><![CDATA[<p>Kósa shortol:<br />
<a href="http://soci.hu/blog/wp-content/uploads/2010/06/otpkosa.png"><img src="http://soci.hu/blog/wp-content/uploads/2010/06/otpkosa-300x294.png" alt="" title="OTP kósa crash" width="300" height="294" class="alignnone size-medium wp-image-1077" /></a></p>
<p>Bmeg, ezeknek szerintem elment az esze. Vagy tényleg shortolnak. Nem tudom, melyik a veszélyesebb.<br />
Ami leginkább felháborít a dologban, az az, hogy nem vállalják a felelősséget a szavaikért. Á, miattunk nem esik a tőzsde. Persze, hogy most az egész világban idegesek a befektetők, morog a maci, de pont ilyenkor kell ésszel beszélni.<br />
Mint a kisgyerek, amikor tűzzel játszik, leég a ház, aztán néz kerek szemekkel, hogy ő nem így gondolta. De ez egy ország, nem egy ház!</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/06/07/elkurtuk-nem-kicsit-nagyon/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Visual Studio unit teszt profilozás</title>
		<link>http://soci.hu/blog/index.php/2010/05/17/visual-studio-unit-teszt-progfilozas/</link>
		<comments>http://soci.hu/blog/index.php/2010/05/17/visual-studio-unit-teszt-progfilozas/#comments</comments>
		<pubDate>Mon, 17 May 2010 21:52:23 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Szakmai élet]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1074</guid>
		<description><![CDATA[A unit tesztek kiváló sebességmérési célok lehetnek, mivel kimagozottan futtatnak egy adott kódrészletet. A unit teszten jobb gomb, create performace session. Zseniális, csak nem megy, ha 64 bitesre van állítva a unit teszt host. Nem láttam ledokumentálva (vagy csak nálam nem megy ez).
Egyszerűen soha nem ér véget a tesztelés, beragad a profiler session.
]]></description>
			<content:encoded><![CDATA[<p>A unit tesztek kiváló sebességmérési célok lehetnek, mivel kimagozottan futtatnak egy adott kódrészletet. A unit teszten jobb gomb, create performace session. Zseniális, csak nem megy, ha 64 bitesre van állítva a unit teszt host. Nem láttam ledokumentálva (vagy csak nálam nem megy ez).<br />
Egyszerűen soha nem ér véget a tesztelés, beragad a profiler session.</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/05/17/visual-studio-unit-teszt-progfilozas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dynamic sebesség újra</title>
		<link>http://soci.hu/blog/index.php/2010/05/17/dynamic-sebesseg-ujra/</link>
		<comments>http://soci.hu/blog/index.php/2010/05/17/dynamic-sebesseg-ujra/#comments</comments>
		<pubDate>Mon, 17 May 2010 16:14:09 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[.NET 4]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Szakmai élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1070</guid>
		<description><![CDATA[Hogy ne a levegőbe beszéljek:


using System;
using System.Diagnostics;
using System.Reflection;

namespace DynamicTypeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            object target = &#34;alma&#34;;
    [...]]]></description>
			<content:encoded><![CDATA[<p>Hogy ne a <a href="http://soci.hu/blog/index.php/2010/05/17/miert-szeretem-a-dynamic-tipust-reflection-helyett/">levegőbe beszéljek</a>:</p>
<pre name="code" class="c#">

using System;
using System.Diagnostics;
using System.Reflection;

namespace DynamicTypeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            object target = &quot;alma&quot;;
            object arg = &quot;m&quot;;

            string a2 = (string)arg;

            Stopwatch w = Stopwatch.StartNew();

            const int callNumber = 1000 * 1000;
            for (int i = 0; i &lt; callNumber; i++)
            {
                Type[] argTypes = new Type[] { typeof(string) };
                MethodInfo mi = target.GetType().GetMethod(&quot;Contains&quot;, argTypes);
                object[] oa = new object[] { a2 };
                bool b = (bool)mi.Invoke(target, oa);
            }

            w.Stop();
            Console.WriteLine(&quot;Reflection hívási idő: {0}&quot;, w.Elapsed);
            double elapsedTickForReflection = w.ElapsedTicks;

            w.Restart();

            for (int i = 0; i &lt; callNumber; i++)
            {
                bool b = ((dynamic)target).Contains(a2);
            }

            w.Stop();
            Console.WriteLine(&quot;Dynamic hívási idő: {0}&quot;, w.Elapsed);

            Console.WriteLine(&quot;A dynamic {0}x gyorsabb volt.&quot;, elapsedTickForReflection / w.ElapsedTicks);
        }
    }
}
</pre>
<pre name="code" class="c">

Reflection hívási idő: 00:00:02.5393161
Dynamic hívási idő: 00:00:00.2049100
A dynamic 12.3923444658829x gyorsabb volt.
</pre>
<p>Ha ügyesebbek vagyunk, és kivesszük a ciklusból a reflection előkészítését:</p>
<pre name="code" class="c#">

using System;
using System.Diagnostics;
using System.Reflection;

namespace DynamicTypeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            object target = &quot;alma&quot;;
            object arg = &quot;m&quot;;

            string a2 = (string)arg;

            Stopwatch w = Stopwatch.StartNew();

            Type[] argTypes = new Type[] { typeof(string) };
            MethodInfo mi = target.GetType().GetMethod(&quot;Contains&quot;, argTypes);
            object[] oa = new object[] { a2 };

            const int callNumber = 1000 * 1000;
            for (int i = 0; i &lt; callNumber; i++)
            {
                bool b = (bool)mi.Invoke(target, oa);
            }

            w.Stop();
            Console.WriteLine(&quot;Reflection hívási idő: {0}&quot;, w.Elapsed);
            double elapsedTickForReflection = w.ElapsedTicks;

            w.Restart();

            for (int i = 0; i &lt; callNumber; i++)
            {
                bool b = ((dynamic)target).Contains(a2);
            }

            w.Stop();
            Console.WriteLine(&quot;Dynamic hívási idő: {0}&quot;, w.Elapsed);

            Console.WriteLine(&quot;A dynamic {0}x gyorsabb volt.&quot;, elapsedTickForReflection / w.ElapsedTicks);
        }
    }
}
</pre>
<pre name="code" class="c">

Reflection hívási idő: 00:00:01.2058747
Dynamic hívási idő: 00:00:00.2044023
A dynamic 5.89951388765798x gyorsabb volt.
</pre>
<p>Jó ez, szeretjük, pedig nem is COMolunk.</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/05/17/dynamic-sebesseg-ujra/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Miért szeretem a dynamic típust reflection helyett?</title>
		<link>http://soci.hu/blog/index.php/2010/05/17/miert-szeretem-a-dynamic-tipust-reflection-helyett/</link>
		<comments>http://soci.hu/blog/index.php/2010/05/17/miert-szeretem-a-dynamic-tipust-reflection-helyett/#comments</comments>
		<pubDate>Mon, 17 May 2010 11:21:15 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[.NET 4]]></category>

		<category><![CDATA[C#]]></category>

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

		<category><![CDATA[Szakmai élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1068</guid>
		<description><![CDATA[Ezért:


var allEntities = (IEnumerable)reposType.GetMethod(&#34;GetAll&#34;, new Type[] { typeof(string[]) }).Invoke(repos, new object[] { includes });

vs.


var allEntities = (IEnumerable)repos.GetAll(includes);

Emellett a dynamic vagy 10x gyorsabb, még akkor is, ha a reflectionnél cachelem a típusleírókat.
]]></description>
			<content:encoded><![CDATA[<p>Ezért:</p>
<pre name="code" class="c#">

var allEntities = (IEnumerable)reposType.GetMethod(&quot;GetAll&quot;, new Type[] { typeof(string[]) }).Invoke(repos, new object[] { includes });
</pre>
<p>vs.</p>
<pre name="code" class="c#">

var allEntities = (IEnumerable)repos.GetAll(includes);
</pre>
<p>Emellett a dynamic vagy 10x gyorsabb, még akkor is, ha a reflectionnél cachelem a típusleírókat.</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/05/17/miert-szeretem-a-dynamic-tipust-reflection-helyett/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mi hiányzik a Visual Studioból Resharper nélkül?</title>
		<link>http://soci.hu/blog/index.php/2010/05/17/mi-hianyzik-a-visual-studiobol-resharper-nelkul/</link>
		<comments>http://soci.hu/blog/index.php/2010/05/17/mi-hianyzik-a-visual-studiobol-resharper-nelkul/#comments</comments>
		<pubDate>Mon, 17 May 2010 08:41:49 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Szakmai élet]]></category>

		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1060</guid>
		<description><![CDATA[Pár napja nem megy a Resharprem, azóta olyan dolgozni a VS-val, mintha notepad előtt ülnék. Fel nem tudom sorolni azt a sok dolgot, amivel segít kódírás közben, pár dolog csak mintaképp:
Refactoring:
Inline, Pull members up és down, Safe delete, Convert Property to Method és vissza, related itemek átnevezése is, make local variable, field vagy parameter (ezeket [...]]]></description>
			<content:encoded><![CDATA[<p>Pár napja nem megy a <a href="http://www.jetbrains.com/resharper/">Resharprem</a>, azóta olyan dolgozni a VS-val, mintha notepad előtt ülnék. Fel nem tudom sorolni azt a sok dolgot, amivel segít kódírás közben, pár dolog csak mintaképp:<br />
Refactoring:<br />
Inline, Pull members up és down, Safe delete, Convert Property to Method és vissza, related itemek átnevezése is, make local variable, field vagy parameter (ezeket nagyon sokat használtam), change signature.<br />
Egyebek: interfész metódus implementáció ahogy létrehoztam egy interface metódust (más mint a beépített), initialize field from contructor, create field from constructor parameter, automatikus base felhívások, var vs. típusos deklaráció konverzió, for to foreach és vissza, foreach to LINQ (durva), lambda expression, lambda statement, anon method, sima method konverziók, automata delegate-re passzoló metódus létrehozás, collapse all a solution explorerben, CTRL-T-re kódfájl keresés (nagyobb solution esetén életmentő), intellisense még nem létező, de már használt változókra, statikus class generálás, ezerféle kódelemzés, enumokhoz jobb intellisense, MVC-hez parser, stb.<br />
Amióta nem megy, sokkal többet kell lapozgatnom a kódfájlok között, időpazarlás.<br />
El se tudom képzelni már, hogy tudnék nélküle programozni, ennyire addict még semmilyen programtól nem lettem.<br />
Ha az msnek lenne esze, megvenné a céget, többet ér, mint a Yahoo. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/05/17/mi-hianyzik-a-visual-studiobol-resharper-nelkul/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Defensive Database Programming ingyenes könyv</title>
		<link>http://soci.hu/blog/index.php/2010/05/15/defensive-database-programming-ingyenes-konyv/</link>
		<comments>http://soci.hu/blog/index.php/2010/05/15/defensive-database-programming-ingyenes-konyv/#comments</comments>
		<pubDate>Sat, 15 May 2010 11:16:20 +0000</pubDate>
		<dc:creator>Soczó Zsolt</dc:creator>
		
		<category><![CDATA[Adatbázisok]]></category>

		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[Szakmai élet]]></category>

		<guid isPermaLink="false">http://soci.hu/blog/?p=1058</guid>
		<description><![CDATA[Érdekesnek ígérkezik, ingyenes, letölthető könyv.
]]></description>
			<content:encoded><![CDATA[<p>Érdekesnek ígérkezik, ingyenes, <a href="http://www.red-gate.com/specials/Ebooks/Defensive_Database_Programming.pdf">letölthető</a> könyv.</p>
]]></content:encoded>
			<wfw:commentRss>http://soci.hu/blog/index.php/2010/05/15/defensive-database-programming-ingyenes-konyv/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
