Pull to refresh
117
0
Пётр Самошкин @AdvanTiSS

User

Send message

Мы обновляем InternetUrok.ru и надеемся на ваше участие

Reading time4 min
Views8.5K
Год назад мы рассказывали об образовательном проекте UniverTV, в рамках которого мы собрали более 4500 видеороликов по двум десяткам дисциплин – от астрономии до юриспруденции.
Проект оказался востребован, и мы решили, что закономерным продолжением будет аналогичный ресурс для школьников. Его мы тоже анонсировали на Хабре этой весной, правда, тогда он был частью UniverTV и находился на поддомене. Позже мы приняли решение запустить проект на отдельном сайте – InternetUrok.ru.



Для чего мы это делаем


Для тех, кто еще не знает, коротко расскажем о том, что такое InternetUrok.ru. Это коллекция видеоуроков по основным предметам школьной программы – постоянно пополняемая, в открытом доступе и без рекламы.
Читать дальше →
Total votes 47: ↑42 and ↓5+37
Comments39

Обновление IETester

Reading time1 min
Views24K
Была приятна удивлена, прочитав свежие заголовки RSS одного из моих избранных сайтов.
Вышла новая версия веб-браузера IETester, позволяющая просматривать и тестировать сайты в IE8 beta 1, IE7 IE 6 и IE5.5 под Vista и XP.
Ссылка на домашнюю страницу разработчика www.my-debugbar.com
Скачать можно здесь
Total votes 46: ↑45 and ↓1+44
Comments36

Прототипирование в Expression Blend + SketchFlow. Часть 3. Работа с контролами

Reading time4 min
Views20K
Продолжаем разбираться с прототипированием с помощью SketchFlow. В предыдущих сериях:

Сегодня мы рассмотрим работу с контролами, а начнем с примитивов.

Примитивы


Прежде всего, помимо того, что вы можете импортировать готовые картинки, какие-то примитивы для разметки компоновки вы можете рисовать непосредственно в Expression Blend (помомо прямоугольников, линий и овалов, есть кривые, звездочки, стрелочки, треугольники, callout`ы и ряд других примитивов):
Читать дальше →
Total votes 34: ↑23 and ↓11+12
Comments29

ReSharper: Анализ на NullReferenceException и контракты для него

Reading time7 min
Views5.1K

Если вы используете ReSharper, то вы, наверняка, знакомы с его подсветкой "Possible 'NullReferenceException'". В этой статье я кратко расскажу об анализаторе, который выводит предупреждения такого рода, и о том, как ему помочь делать это лучше.


Сразу рассмотрим пример:


`public string Bar(bool condition)
{
  string iAmNullSometimes = condition? «Not null value»: null;
  return iAmNullSometimes.ToUpper();
}

* This source code was highlighted with Source Code Highlighter.`

ReSharper справедливо подсветит iAmNullSometimes во второй строке метода с таким предупреждением. Теперь выделим метод:


`public string Bar(bool condition)
{
  string iAmNullSometimes = GetNullWhenFalse(condition);
  return iAmNullSometimes.ToUpper();
}

public string GetNullWhenFalse(bool condition)
{
  return condition? «Not null value»: null;
}

* This source code was highlighted with Source Code Highlighter.`

После этой операции предупреждение пропадает. Почему так происходит?

Читать дальше →
Total votes 53: ↑39 and ↓14+25
Comments22

Динамические вызовы: сравнение методов

Reading time15 min
Views8.8K

Динамические вызовы: что это и зачем?



Думаю, для каждого разработчика, работающим на статических языках программирования, иногда возникала необходимость прибегнуть к динамическим вызовам — вызвать метод чего-то, о чем пока еще ничего не известно. Или получить какое-то свойство у какого-то объекта, о котором будет известно только в run-time.

Это иногда используется в алгоритмах, основанных на так называемой «утиной типизации» (duck typing):
Если что-то выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка и есть.


В данной статье я хотел бы рассмотреть основные доступные в Microsoft .NET 4.0 способы, сравнить их производительность и синтаксис.

Читать дальше →
Total votes 98: ↑76 and ↓22+54
Comments27

Автоматизация изменений БД в .NET

Reading time5 min
Views5.9K
Здравствуйте!
Я хотел бы рассказать о проектах Migrator.Net и ECM7.Migrator.

Migrator.Net — это механизм контроля версий базы данных, похожий на Migrations в Ruby on Rails. Migrator позволяет автоматизировать выполнение операций изменения БД и автоматически ведет учет версий.

Migrator написан на C# и будет удобен, в первую очередь, при использовании в проектах под.NET.

Сначала я сделаю небольшой обзор указанных проектов, а потом постараюсь выделить их «плюсы» и «минусы».

Читать дальше →
Total votes 44: ↑35 and ↓9+26
Comments46

Декартово дерево: Часть 3. Декартово дерево по неявному ключу

Reading time12 min
Views57K

Оглавление (на данный момент)


Часть 1. Описание, операции, применения.
Часть 2. Ценная информация в дереве и множественные операции с ней.
Часть 3. Декартово дерево по неявному ключу.
To be continued...

Очень сильное колдунство


После всей кучи возможностей, которые нам предоставило декартово дерево в предыдущих двух частях, сегодня я совершу с ним нечто странное и кощунственное. Тем не менее, это действие позволит рассматривать дерево в совершенно новой ипостаси — как некий усовершенствованный и мощный массив с дополнительными фичами. Я покажу, как с ним работать, покажу, что все операции с данными из второй части сохраняются и для модифицированного дерева, а потом приведу несколько новых и полезных.

Вспомним-ка еще раз структуру дерамиды. В ней есть ключ x, по которому дерамида есть дерево поиска, случайный ключ y, по которому дерамида есть куча, а также, возможно, какая-то пользовательская информация с (cost). Давайте совершим невозможное и рассмотрим дерамиду… без ключей x. То есть у нас будет дерево, в котором ключа x нет вообще, а ключи y — случайные. Соответственно, зачем оно нужно — вообще непонятно :)

На самом деле расценивать такую структуру стоит как декартово дерево, в котором ключи x все так же где-то имеются, но нам их не сообщили. Однако клянутся, что для них, как полагается, выполняется условие двоичного дерева поиска. Тогда можно представить, что эти неизвестные иксы суть числа от 0 до N-1 и неявно расставить их по структуре дерева:

Получается, что в дереве будто бы не ключи в вершинах проставлены, а сами вершины пронумерованы. Причем пронумерованы в уже знакомом с прошлой части порядке in-order обхода. Дерево с четко пронумерованными вершинами можно рассматривать как массив, в котором индекс — это тот самый неявный ключ, а содержимое — пользовательская информация c. Игреки нужны только для балансировки, это внутренние детали структуры данных, ненужные пользователю. Иксов на самом деле нет в принципе, их хранить не нужно.

В отличие от прошлой части, этот массив не приобретает автоматически никаких свойств, вроде отсортированности. Ведь на информацию-то у нас нет никаких структурных ограничений, и она может храниться в вершинах как попало.
Если интересно - под кат
Total votes 81: ↑77 and ↓4+73
Comments18

Разгоняем .NET

Reading time17 min
Views5.6K
.Net используются при программировании настольных и веб-приложений, а возможно ли использовать фреймворк для управления промышленными объектами?
Разберемся в начале с тем, где возможно применение такого ПО.
Промышленные системы управления состоят из нескольких уровней:
  • уровень датчиков
  • уровень управления (ПЛК, компьютер)
  • уровень визуализации/SCADA

Визуализация – самый неприхотливый уровень АСУ по скорости обработки информации, обычно на операторских панелях отображается информация о состоянии какого-либо агрегата всей системы (некоторые численные значения, биты состояния (вкл-выкл), графики изменения величин). Для этого уровня можно свободно использовать все возможности .NET для вывода графической информации (Win Forms, WPF, SilverLight).
Рассмотрим уровень управления. Здесь нужная скорость обработки информации зависит от объекта управления: если вы хотите просто помигать светодиодом или включить/выключить двигатель без жесткой привязки по времени, то это возможно. Если же необходимо управлять объектами с жестко-определенным временем реакции, то необходимо использовать систему реального времени.
Для систем реального времени необходима ОС реального времени. В таких ОС жёстко определено время переключения контекста задач, т.е. квант времени на обработку каждого потока с одинаковым приоритетом выделяется одинаковый.
А что может получиться при использовании «десктопной» ОС?
Читать дальше →
Total votes 54: ↑36 and ↓18+18
Comments36

Раскукоживатель habrahabr.ru в GoogleReadere

Reading time3 min
Views1.7K
Доброго времени суток. Наверное многие любят читать хабрахабр из гуглридера. И я не исключение. Но ужасно раздражает что если статья понравилось, то нужно открывать новую вкладку и читать ее уже с сайта. Все статьи не успеваешь прочитать, вкладки накапливаются, трафик тратится. Вобщем — непорядок и нужно что то решать.
Погуглив немного и поискав на хабре ничего приличного не нашел. Поэтому решил засучить рукава и написать небольшое расширение для хрома, которое поможет устранить эту проблему.
Читать дальше →
Total votes 122: ↑109 and ↓13+96
Comments94

Information

Rating
Does not participate
Location
Симферополь, Республика Крым, Россия
Registered
Activity