Тэги

Silverlight (36) WPF (10) IIS (7) Visual Studio (7) SharePoint (6) .Net Framework (5) ODP.NET (5) ASP.NET (4) C# (4) common (4) Network Settings (3) JavaScript (2) MS Office (2) Resharper (2) WCF (2) WEB (2) XPath (2) XSLT (2) ADO.NET (1) APEX (1) CMD (1) CSS (1) EF (1) HTML (1) Hardware bugs (1) Java (1) MS SQL (1) Oracle (1) PDF (1) Version Control (1) XAML (1)

понедельник, 13 сентября 2010 г.

суббота, 11 сентября 2010 г.

ReSharper: Решарпер не умеет поддерживать расшаренныекросс-компиляционные проекты.

Есть в Visual Studio приемчик такой, я его называю попростовски - кросс-компиляционный шаринг. ))
Фишка в том, что в таких проектах у вас разные верссии .NET Framework, но общий код!
И правите вы код в одном файле, т.к. физически файл лежит только в одном проекте, а в остальных есть только ссылки на этот файл.
Поскольку namespace в таких проектах общий, то можно спокойно передавать объекты .NET Framework разных версий между звеньями приложения написанными на .NET Framework разных версий.
Удобно также референс добавлять на проект подходящей версии .NET Framework.
Ну как-то так, в общем. Нужно будет – нагуглю вспомню.
Я что-то писал рашньше про это – WPF + WCF + Silverlight + WCF+ ASP.NET.
Фигасе! А товарищи из Решарпера не чешутся. Не умеет ReSharper 5 с этим всем обходится. Жаль. :))
Приходится работать почестному постаринке – поиском по солюшену.
Правда и VS и сама немного тупит при таком подходе. Но совсем немного – один и тот же файл нельзя открыть два раза и контекст на нужный проект у открытого файла не переключается.

четверг, 9 сентября 2010 г.

SVN: Пропали иконки TortoiseSVN.

В проводнике Windows у вас пропали иконки TortoiseSVN.

Для восстановления ставьте текущую версию Tortoise SVN повторно и используйте второй раз режим установки “Repair” (восстановление).

Эта проблема возникает у тех кто ставил или ставит новую версию TortoiseSVN поверх старой.

Информация поступила с официального сайта Tortoise SVN и помогла мне.
Это текущая ситуация, возможно в последующем этот пост станет не актуальным.

ODP.NET: Тонкости биндинга переменных.



“Сколько же можно наступать на грабли от Oracle”, сказал я себе и решил написать этот пост.

ODP.NET это реализация ADO.NET для работы с Oracle.

Перечислю некоторые тонкости биндинга параметров в ODP.NET.

Изначально имеем код запроса, который корректнен и работает:
Начальный пример
var oCom = new OracleCommand
{
    CommandText = @"begin :outP := krn_setting_iapi.get_v(:inpP1,:inpP2,:inpP3); end;",
};
oCom.Parameters.Add("outP", OracleDbType.Varchar2, 100, null, ParameterDirection.Output);
oCom.Parameters.Add("inpP1", OracleDbType.Varchar2, 20, "first", ParameterDirection.Input);
oCom.Parameters.Add("inpP2", OracleDbType.Varchar2, 20, "second", ParameterDirection.Input);
oCom.Parameters.Add("inpP3", OracleDbType.Varchar2, 20, "first", ParameterDirection.Input);

Тонкость 1. Называется “У вас нет такого геммора? Тогда Oracle идет к вам! ”.
Просто так менять порядок биндинга переменных в коде нельзя.
oCom.Parameters.Add("inpP1", OracleDbType.Varchar2, 20, "version", ParameterDirection.Input);
oCom.Parameters.Add("outP", OracleDbType.Varchar2, 100, null, ParameterDirection.Output);
Если вы хотите так сделать, то вам нужно добавить следующую строкчку:
oCom.BindByName = true;
Иначе ODP.NET выдаст тут вам разные исключения, возможно ORA-01403: no data found или/и ORA-06512, ну или ORA-20000.

Тонкость 2. Называется “Геммор - наш стиль!”.
В начальном примере, в параметре inpP1 и inpP3, передается одинаковое значение, но вы не можете сократить количество переменных и следующая запись будет некорректна:
var oCom = new OracleCommand
{
    CommandText = @"begin :outP := krn_setting_iapi.get_v(:inpP1,:inpP2,:inpP1); end;",
};
Не попадитесь на этом!!!
Возможно, положение может исправить строчка кода “oCom.BindByName = true;”, но я сейчас этого не помню точно.

Токость 3. “Мы хуже чем ты думаешь.”
Это практически бага и касается она использования типа параметра OracleDbType.Varchar2 (т.е. оракловый String).
Это может быть не во всех версиях ODP.NET, но встречается часто.
Для этого типа обязательно задайте размер (size), у нас выше в примере это цифры 100 и 20. Детально об этом здесь.
К этому относится и следующее:
метод Parameters.Add(…) в классе OracleCommand не имеет перегрузки для передачи размерности без передачи значения параметра, если еще надо передать ParameterDirection.
По человечески это значит, что вы думаете, что в следующей строке вы зададите размерность для Varchar2 в 100:
oCom.Parameters.Add("outP", OracleDbType.Varchar2, 100, ParameterDirection.Output);
Но на самом деле вы задаете так значение параметра в 100.ToString(), поэтому строка выше работать не будет.
ODP.NET выдаст ошибку: ORA-06502: PL/SQL: numeric or value error: character string buffer too small.

среда, 8 сентября 2010 г.

Вывод в cmd или bat пустой строки.



Как вставить пустую строку в cmd через bat-файл.
Как вывести пустую строку в cmd через bat.
Как добавить переснос строки в CMD вывод.
echo пустой строки.

Чтобы отформатировать в cmd вывод и вывести в окне консоли пустую строку нужно использовать соманду “@echo.

Обратите внимание, что это не просто команда echo с управляющим символом “@” перед ней. Это именно команда echo с точкой на конце без пробела между echo и точкой.

@echo.

суббота, 4 сентября 2010 г.

XPS: Microsoft XPS vs PDF.

Исправлено 17.09.10.Вы хотите выбрать лучший формат для вашей печати (PDF)?
Или хотите чего-то новенького (XML Paper Specification - XPS)?
Выберите PDF или подумайте трижды, прежде чем выбирать XPS!
Таки облажалась команда Microsoft, создавшая реализацию XPS, по части алгоритмов представления и, подозреваю, налажали они не в одном месте.
XPS это здорово, это хорошо работает под WPF, но для промышленного решения мы выбираем проверенные решения, Мы выбираем PDF!
Вот вам, на рисунке, полученный мной при печати сюрприз от XPS.
MicrosoftXPSBug
Здесь есть скругления углов, выполненные наложенными изображениями, но также видны тоненькие линий, пытающиеся дорисовать прямой угол.
Жесть, не правда ли!
Эти тоненькие линии - добавочка, так сказать, от XPS. Это должно быть скрыто под изображением.
Также досадно, что XPS вносит мусор в изображения, в отличии от PDF. Как буд-то это JPEG какой-то. Увеличте изображение и мусор будет заметен на скруглениях углов.
Добавлено:
Обидно, но на низком уровне печать в Windows всегда идет через XPS (могу быть не точным в этом), даже в Windows XP.
Если вам надо обойти эту багу, то есть два решения:
1. Не используйте PNG изображения в верстке. Видимо, начиная с Internet Explorer, Microsoft не дружит с этим форматом графики. :)
2. Или постарайтесь найти фичу "Печать как картинка". Например она есть в Adobe Reader и доступна по нажатии кнопки "Advanced" на странице настроек печати:

пятница, 3 сентября 2010 г.

Visual Studio 2010: Невозможные баги.

Есть баги, появление которых невозможно в таком продукте, как Visual Studio 2010.
Зато с их появлением сразу ставятся точки над i и становятся смешны коллеги до одурения подсевшие на разные тестовые фреймворки и подходы. Slacker idiots…
Как не крути, а шаг в сторону от бизнес логики и оказывается, что без грамотного гуиста не обойтись.

У команды VS 2010 есть оправдание. Ими проделана огромная работа по переводу Visual Studio на WPF.
Но встает вопрос! А кто тогда делал бэта-тестирование? Манагеры? Планктон? Бесчисленные лекторы-профаны?

Самая смешная из известных ошибок, это когда окно поиска, открываемое в VS 2010 по нажатию Ctrl – F, каждый раз увиличивается на чуть-чуть. Приколько, когда после нескольких дней работы PopUp окошко поиска занимает почти весь экран ))).

Посчастливилось и мне найти багу. Это не так весело, потому что она напрямую касается читабельности кода и скорости работы.
Стандартная операция – вы свернули блок кода или разметки XML, и хотите поменять его табуляционные отступы. Вы выделяете, как в старых версиях VS, строку со свернутым кодом, нажимаете клавишу TAB, но, вместо корректного добавления отступа в каждую строчку, вы получаете кучу символов табуляции только в первой строке свернутого кода.
Думаю я не первый кто на это наткнулся.

Добавлено:
Таки MS отреагировал на мою багу. Они сделали workaround неполное решение - при нажатии на табуляцию XML разворачивается (при работе с C# код остается свернутым).
Но эта бага все-равно осталась в других более тонких сценариях форматирования отступов и переноса кода, например когда у вас свернутый блок внутри родительского XML или что-то подобное, уже не помню.