CodeStore.ru

Блог разработчика. Мои шпаргалки :)

Файл: OdnoklassnikiAuthClient.cs

За основу был взят код отсюда и частично отсюда
Использование:

OAuthWebSecurity.RegisterClient(
  new OdnoklassnikiAuthClient(
    "Application ID", 
    "Public Key", 
    "Secret Key",
    "Return Url"), "Одноклассники", null);

Задача: необходимо представить объект в виде Dictionary<string,string>, где key — имя поля, value — значение поля.
Вариант решения:

static public Dictionary<string, string> ObjectToDictionary(object obj)
{
  try
  {
    return (from x in obj.GetType().GetProperties() select x)
      .Select(x => new
      {
          key = x.Name,
          val = ( x.GetGetMethod()
		           .Invoke(obj, null) ?? string.Empty
				 ).ToString()
      })
      .Where( x => // where можно убрать или дополнить своими условиями
	    (!x.val.Contains("EntitySet") && 
		  x.val.Length > 0 && 
		  x.key != x.val) || 
		x.key == "id" )
      .ToDictionary(x => x.key, x => x.val);
  }
  catch (Exception ex)
  {
      return new Dictionary<string,string>();
  }
}

Задача: известен цвет фона некоторых элементов веб-страницы, необходимо определить, какой цвет текста черный или белый подойдет для текста, чтобы его было хорошо видно?
Решение:

    $('.text').each(function(){
        color = new RGBColor($(this).parent().css('background-color'));
        if (color.ok) { 
            var isBlack = color.r * 0.3 + color.g * 0.59 + color.b * 0.11 > 128;
            $(this).css('color', isBlack ? 'black' : 'white' );
        }
    });

RGBColor берем здесь
Результат работы:

Нашел тут отличную вещь.
Пусть есть такие классы:

public class A {
  public string prop1; 
  public int prop2;
  public int prop3;
}

public class B {
  public string prop1;
  public int prop2;
  public int prop4;
}

Необходимо скопировать значения одноименных полей из экземпляра одного класса в экземпляр другого. В данном случае два поля с одинаковыми именами и типами, но бывают случаи, когда таких полей несколько десятков и писать код с переприсваиванием значений нет ни желания ни возможности.
Решение

A a = new A();
B b = new B();
//...
Mapper.CreateMap<A, B>();
b = Mapper.Map<A, B>(a);

Сайт библиотеки http://automapper.org/

Есть enum:

public enum Icon
    {
        None = 0,
        Accept = 1,
        Add = 2,
        ...
        ApplicationFormMagnify = 15,
        ApplicationGet = 16,
        ApplicationGo = 17,
        ApplicationHome = 18,
        ...
     }

Необходимо получить значение Icon.ApplicationHome по имени «ApplicationHome».
Решение:

var names = System.Enum.GetNames(typeof(Icon));
var values= System.Enum.GetValues(typeof(Icon)).Cast<int>();

var value = (Icon)(from item in names.Zip(values, (n, v) => new { n, v })
                   where item.n == "ApplicationHome"
                   select item.v).FirstOrDefault();
#Циклический запуск приложения с интервалом и запуск браузера из shell скрипта
clear
while [ "true" ] 
do
  res=`passportreader 'http://domain.ru/service?task=getData'`
  if [ ${#res} -gt 0 ]; then
    cmd="firefox '${res}'&"
    echo $cmd
    eval $cmd
  else
    echo "Положите документ на сканер"
  fi
  sleep 5
done

#Зайти под root в ubuntu
sudo passwd root
#Установка приложений в терминале (например mc)
apt-get install mc
  ...
  xtype:'toolbar',
  style: {
    border: 0,
    padding: 2
  },
  ...

Решение нашел тут

var grid = Ext.create('Ext.grid.Panel', {
  scroll: false,
  viewConfig: {
    style: { overflow: 'auto', overflowX: 'hidden' }
  },
  // ...
});
//Текущая директория:
System.getProperty("user.dir")

//Class Path:
System.getProperties().getProperty("java.class.path", null)

//GUID
java.util.UUID.randomUUID().toString()

Решение представляет собой jQuery плагин + css. Плагин применяется к input text или asp:TextBox. Для asp в качестве селектора лучше использовать класс. Плагин «отрывает» input и помещает его в специально подготовленную таблицу. Как я ни пытался обернуть div-ами, ничего хорошего из этого не выходило, работало только под новыми браузерами. roundMe исходные коды
roundMe.css

.roundedText { 
  background: url('roundMe.png') no-repeat right -32px; 
  border-collapse:collapse;
}
.roundedText .right{ 
  height:30px; 
  width:4px; 
}
.roundedText .left { 
  background: url('roundMe.png') no-repeat left 0px; 
  padding-left:4px;
}
.roundedText input {
  background:transparent; 
  border:none;
}

roundMe.js

(function ($) {
  $.fn.roundMe = function () {
    var tpl = '
 
'; this.each(function () { $(this).after(tpl.replace('placeHolder', 'ph_' + $(this).attr('id'))) .detach() .prependTo($('[id="ph_' + $(this).attr('id') + '"]')) .parents('.roundedText'); }); }; })(jQuery);

index.html

...



...


roundMe.png