?

Log in

Fame T. on everything

Recent Entries

famet

Аватар

View

Navigation

July 2nd, 2010

private void View_CellValueChanging(object sender, DataCellArgs e)
    {
      switch (View.SelectedSourceId)
      {
        case CommonDatabaseID.BankClientPIF:
        case CommonDatabaseID.PromSvyazBank:
          switch (e.ColumnName)
          {
            case "PsbTransTypeSetting":
            case "TransTypeID":
            case "BidPifNumber":
            case "BidPifDate":
            case "PsbManualImported":
            case "PsbManualImportComment":
            case "PsbProposedOperationID":
            case "PsbProposedOperation":
            case "ToDelete":
            case "PsbOperTypeSetting":
            case "OperTypeID":
              break;
            default:
              e.Cancel = true;
              break;
          }
          break;
      }
    }


* This source code was highlighted with Source Code Highlighter.

May 20th, 2010

(no subject)

Share
Аватар
Бывают группы, которые будут жить вечно. Ramones - одна из таких. Они жгут не по-детски, эти парни в узких голубых джинсах, косухах и белых кроссах, которые играют, на первый взгляд, примитивные и однообразные песни. Но я слушаю их уже пару часов.
Ниже - моя подборка. Enjoy!!!

Начнем с легендарного:


 
Ну и понеслась дальше:









April 28th, 2010

Халявный стаут

Share
Аватар
Если пить холодный кофе при жестком насморке, то очень напоминает что-то среднее между Гинессом и Боуменом.

March 22nd, 2010

Майкрософту за то, что выпустили локализованные версии Visual Studio не оставив возможности установки языкового пакета. VS и MSDN на русском - это что-то, скажу я вам. Тыкаюсь в менюшках как слепой котенок. Отрадно, что хоть ReSharper на инглише.

December 10th, 2009

Вот тут наткнулся на креатив коллег из Гонконга:

if (_limitPrice.Value.HasValue)
            {
                double percent = 0;
                if (MarketData.MarketData[MarketDataField.Last.Value] != null)
                {                    
                    if (double.TryParse(AppSettingService.GetString("WarningPercent", null), out percent))
                    {
                        double diff = ((_limitPrice.Value.Value - (double)MarketData.MarketData[MarketDataField.Last.Value]) / (double)MarketData.MarketData[MarketDataField.Last.Value]) * 100;
                        if (Math.Abs(diff) > percent)
                        {
                            errorText += "Limit price deviates from the last price by " + percent + "%\r\n";
                        }
                    }
                }
                else
                {
                    if (side.Equals(Side.Buy))
                    {
                        if (MarketData.MarketData[MarketDataField.Bid.Value] != null)
                        {
                            if (double.TryParse(AppSettingService.GetString("WarningPercent", null), out percent))
                            {
                                double diff = ((_limitPrice.Value.Value - (double)MarketData.MarketData[MarketDataField.Bid.Value]) / (double)MarketData.MarketData[MarketDataField.Bid.Value]) * 100;
                                if (Math.Abs(diff) > percent)
                                {
                                    errorText += "Limit Price deviates from the bid price by " + percent + "%\r\n";
                                }
                            }
                        }
                    }
                    else
                    {
                        if (MarketData.MarketData[MarketDataField.Ask.Value] != null)
                        {
                            if (double.TryParse(AppSettingService.GetString("WarningPercent", null), out percent))
                            {
                                double diff = ((_limitPrice.Value.Value - (double)MarketData.MarketData[MarketDataField.Ask.Value]) / (double)MarketData.MarketData[MarketDataField.Ask.Value]) * 100;
                                if (Math.Abs(diff) > percent)
                                {
                                    errorText += "Limit Price deviates from the ask price by " + percent + "%\r\n";
                                }
                            }
                        }
                    }
                }
            }


Пришлось переделать так:

if (_limitPrice.Value.HasValue)
            {
                double limitPrice = _limitPrice.Value.Value;
                double warningPercent;

                string percentStr = AppSettingService.GetString(AppSettingsKeys.WarningPercent, null);
                if (double.TryParse(percentStr, out warningPercent))
                {
                    if (MarketData.MarketData[MarketDataField.Last.Value] != null)
                    {
                        errorText += CheckPriceDeviation(MarketData, MarketDataField.Last.Value, "last", limitPrice, warningPercent);
                    }
                    else
                    {
                        if (side.Equals(Side.Buy))
                        {
                            errorText += CheckPriceDeviation(MarketData, MarketDataField.Bid.Value, "bid", limitPrice, warningPercent);
                        }
                        else
                        {
                            errorText += CheckPriceDeviation(MarketData, MarketDataField.Ask.Value, "ask", limitPrice, warningPercent);
                        }
                    }
                }
            }

        private static string CheckPriceDeviation(MarketDataProvider marketData, string marketDataField, string fieldName, double limitPrice,
            double warningPercent)
        {
            string result = null;

            object priceObj = marketData.MarketData[marketDataField];
            if (priceObj != null && priceObj is double)
            {
                double price = (double)priceObj;
                if (price != 0)
                {
                    double diff = ((limitPrice - price) / price) * 100;
                    if (Math.Abs(diff) > warningPercent)
                    {
                        result = "Limit Price deviates from the " + fieldName + "price by " + warningPercent + "%." + Environment.NewLine;
                    }
                }
            }

            return result;
        }
/// <summary>
    /// Contains a list of keys which can be used to obtain settings from appSettings
    /// </summary>
    public static class AppSettingsKeys
    {
        /// <summary>
        /// A key under which the maximal percent by that an entered limit price can deviate 
        /// from last/bid/ask price without displaying a warning is stored.
        /// </summary>
        public static readonly string WarningPercent = "WarningPercent";
    }


"Что же было не так?" - спросит меня неискушенный читатель?
  1. А БЛЯТЬ КОПИПАСТОМ ТРИ КУСКА НАПИСАТЬ - ЭТО КАК?
  2. А 3 раза строку в виде литерала, а не константы впихнуть?
  3. А по 5 раз писать
    (double)MarketData.MarketData[MarketDataField.Ask.Value]
    вместо того, чтоб скопировать в переменную и использовать потом? Это не только хуево читается, но и жутко неэффективно (куча вызовов методов и приведений).
  4. Ну и ясен хуй мы не проверяем число на ноль, прежде чем поделить на него, из-за чего я собственно и полез.
Так что если ты пишешь так же, дружок, Code Nazi уже идет к тебе!

December 2nd, 2009

The man who sold the world

Share
Аватар
Наверняка абсолютное большинство из вас думает, что это песня Нирваны. Однако же Курт сотоварищи всего лишь сделали кавер к концерту MTV Unplugged. Я вот сегодня чота внезапно об этом вспомнил и первый раз в жизни послушал. От кавера мало отличается :)

November 7th, 2009

Зима пришла

Share
Аватар
Зимний сезон 09/10 открыл. Все же зимнее катание- это нечто особенное со своими прелестями и недостатками. Но самое ахуенное - это скоростной спуск наперегонки с собаками - экстрим покруче борда:)

Вчерашние фото зимнего леса ( там чотко яибу):

 



October 23rd, 2009

Всем пятница пацаны!

Решил я поведать вам один рецепт, который недавно открыл для себя. У него есть много плюсов:
  • вкусно
  • быстро
  • просто
  • довольно дешево
  • отличная закуска под пятничное пефко.
Итак, готовить мы будем жареный картофан с беконом и грибочками. Нет, нового канеш ничего нет, но открытием для меня явилось именно сочетание бекона и грибочков, которое жжот неимоверно.

Итак, фтыкаемCollapse )

July 9th, 2009

...будь то велосипедисты, табуреточники или мотоциклисты. Сегодня я на своей репе прочувствовал, что шлем - это вещь необходимая и покупаться должна вместе с байком. Ехал я значится сегодня по бот. саду, никого не трогал, вылезал потихоньку из ебеней, куда меня завела очередная тропинка, потом - хуяк, чувствую как кто-то сворачивает мне шею. Останавливаюсь и понимаю, что я уебался головой в ветку, которая появилась из ниоткуда. Хорошо, что я был в шлеме и очках. Удар пришелся как раз в шлем и козырек, а также в верхнюю часть оправы очков.
Повреждения:
  • дерево - на участке в 20 см содрана кора
  • я - небольшая ссадина на лбу и чуть-чуть болящая шея
  • шлем - небольшая вмятина и в одном месте порвалась обшивка. После такого я его выкидывать не собираюсь, не очень серьезный удар был:
  • очки - только дома я заметил, что одна линза слегка выскочила из оправы. Вставил на место.
Нет, канеш перспективы склеить ласты или получить ЧМТ у меня не было, но получить удар дубиной в бубен с последующим образованием гематомы и большой ссадины на лице, согласитесь, тоже не очень приятно.

Засим все, катайтесь безопасно!!!

June 23rd, 2009

Всё

Share
ККК, магистр, зига
Я - МАГИСТР!!!
Powered by LiveJournal.com