Soci (Soczó Zsolt) szakmai blogja

2010.06.24.

Access to modified closure figyelmeztetés a Resharperben

Filed under: .NET,Szakmai élet — Soczó Zsolt @ 17:37

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(
rs => rs.ResStringIntID, //Kulcs a resid
rs => rs.TransText, //A tartalom a lokalizált szöveg
rs => rs.LanguageID == langId); //Ehhez a nyelvhez építjük fel a táblát
}

2010.06.23.

Tőzsde: Analysis of the “Flash Crash” Date of Event: May 6, 2010

Filed under: Élet,Tőzsde — Soczó Zsolt @ 22:30

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 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?
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ű).
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.

2010.06.17.

Best Practices: How to implement INotifyPropertyChanged right?

Filed under: .NET,Szakmai élet — Soczó Zsolt @ 22:21

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
{
///

/// Real-time data descriptor for IB tick data
///

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(x => x.LastPrice);
private static readonly PropertyChangedEventArgs LastBidChangedArgs = ObservableHelper.CreateArgs(x => x.LastBid);
private static readonly PropertyChangedEventArgs LastAskChangedArgs = ObservableHelper.CreateArgs(x => x.LastAsk);
private static readonly PropertyChangedEventArgs LastSizeChangedArgs = ObservableHelper.CreateArgs(x => x.LastSize);
private static readonly PropertyChangedEventArgs LastBisSizeChangedArgs = ObservableHelper.CreateArgs(x => x.LastBidSize);
private static readonly PropertyChangedEventArgs LastAskSizeChangedArgs = ObservableHelper.CreateArgs(x => 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;
}
}
}

2010.06.07.

Elkúrtuk, nem kicsit, nagyon

Filed under: Élet,Tőzsde — Soczó Zsolt @ 08:49

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 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!

Powered by WordPress