Метка: C#
SPFieldLookupValueCollection или почему не добавляются значения?
Пользователь admin Июл.26.2011. Категория SharePoint
Началось все с того, что я создал 2 списка — Преподаватели и ученики.
Одна из колонок в списке Преподавателей была — Multi Lookup типа.
Создал свой Event Receiver, повесился на событие ItemAdded.
При добавлении нового ученика, он автоматом присваивается преподу.
Все бы ничего, но код вида:
var field = (SPFieldLookupValueCollection)mentor[MenteesColumnName]; field.Add(new SPFieldLookupValue(properties.ListItemId, properties.ListItem.Title)); mentor.Update(); //my ListItem object
не хотел работать…
Чтож, решение под катом.
немного побаловался с ConfigurationManager
Пользователь admin Янв.24.2011. Категория Silverlight, Программирование
Совсем недавно понадобилось сделать шифрование секции connectionStrings в web.config.
Собственно шифрование базировалось на RSA с использованием 1024 битного ключа.
Ну чтож…
Самый простой вариант — использование RsaProtectedConfigurationProvider.
Все бы хорошо, все сделано (да делать там практически нечего
), но есть одно НО.
… потребовалась утилита, которая сделала бы первоначальную шифровку, осуществлять ее через aspnet_regiis не очень то и хотелось, скажем так лень, двигатель прогресса. Захотелось все по простому, а именно сделать утилиту, которой банально указываешь web.config + режим (crypt/decrypt).
Тут то я и столкнулся с проблемой… (читать дальше…)
Library project file cannot specify ApplicationDefinition element.
Пользователь admin Фев.20.2010. Категория WPF, Программирование
Сегодня столкнулся с проблемой.
После переноса класса на основе Window в библиотеку, проект перестал билдиться, сообщая «Library project file cannot specify ApplicationDefinition element.».
Решение проблемы:
Solution Explorer -> свойствах файла -> Build Action изменить на Page.
Пересобрать проект.
MailRuChekershke
Пользователь admin Фев.15.2010. Категория WPF, Программирование
На выходных хотелось чего-нибудь написать, но при этом чтобы мозг особо и не напрягался.
Тут общаясь со slider’ом понял что у парня проблема. Решил помочь, да и на античате давно нет активности.
Собственно написал ему многопоточный чекер почтовых ящиков для сервиса — Mail.ru (валид/невалид).
Знакомство в WPF
Пользователь admin Янв.26.2010. Категория WPF, Программирование
Второй день подряд занимаюсь изучением WPF.
И на 2-й день столкнулся с проблемой. Вчера скачал WPF Toolkit, а сегодня проблемы
Рисовал форму в Expression Blend 3. Все прекрасно, все работает, но вот незадача, в Visual Studio 2008 SP1 отказывается открываться.
NUnit – unit-testing framework
Пользователь admin Июл.30.2009. Категория Программирование
Буквально сегодня бороздя просторы интернета в поисках нормальной русскоязычной документации (описания, мануалов) по аттрибутам фраемворка — NUnit, наткнулся на запись в блоге. Автор любезен и позволил скопировать информацию.
От себя хочу добавить. Материал достаточно полезный, просто описан и показывает много возможностей, если до этого работа с NUnit как таковая не осуществлялась.
Ну чтож, пожалуй начнем (ух и намучаюсь же я сейчас с оформлением
)
(читать дальше…)
Определение ТИЦ C#
Пользователь admin Июн.30.2009. Категория Программирование
Сегодня на ачате чувак попросил перевести с php на C#
Ниже код на php:
function getCI($url)
{
$url = str_replace("www.", "", $url);
$ci_url = "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.".$url."/";
$ci_data = implode("", file("$ci_url"));
preg_match("/value=\"(.\d*)\"/", $ci_data, $ci);
if ($ci[1] == "")
return 0; // Если не смогли определить ТИЦ...
else
return $ci[1]; // Вот оно счастье...
}
Вот что из этого вышло:
(читать дальше…)
Live Status: Failed
Пользователь admin Июн.02.2009. Категория Будни
Грубо говоря утро началось с того что в ~8:10/20 оказался на рабочем месте, почитал заметки на хабре, касательно информационной безопасности.
Ближе к 9 договорился с однокашниками ехать в Политех.
Подъехал к остановке, прождал минут 10, звоню… «А мы уже тут, тебя не дождались и поехали»
В голове пронеслось «мда…», ну да ладно, сел на 43-й маршрут, доехал.
С часик наверное, непонятно зачем бегали по всему главному корпусу, потом пошли в 1-ый корпус, там-то у меня и должна была быть лабораторная работа по ТЭЦ брррр…
Лаборанта нет, так что облом, сегодня все скидывались, собирали на экзамены.
Понравилась фраза, наподобие — «Хм, а что в списке так мало людей? Где все остальные?»
А вчера…
BackgroundWorker или чем я сегодня занимался.
Пользователь admin Май.23.2009. Категория Будни, Программирование
Утро началось для меня часов в 8, когда сестра проснулась и начала собираться на работу.
Встал и сразу ощутил боль в шее, больно поворачивать голову вправо. Такс, пора подушку убирать. :twisted:
Первым делом привел себя в порядок, поел, сел за комп. Включил в аську и увидел что заказчик скинул мне примерный алгоритм того что он хочет увидеть. Посидел, подумал… Я ему уже сделал некую часть, осталось за малым. Но это первый блин и конечно же комом.
Решил что пора заняться рефакторингом, причем солидным.
Так же взглянул в сторону XAML, по после 20-ти минут, отложил до лучших времен. Не совсем понял как допустим у объекта ListView изменить коллекцию колонок.
Начал кординально переписывать проект, и сразу же задумался о потоках, оно в принципе многопоточно, за исключением того что основной поток все равно вешается и это приводит к «эффекту зависшего окна»
.
Начал думать как все обойти, думать долго не пришлось, в принципе знал о классе BackgroundWorker *, но почему-то не использовал его
.
Начал все прикручивать, разбирать и т.п. Вобщем за сегодня ~1000 строк кода я налопатил, немного мне это надоело. Пошел смотреть TV, а именно программу «Большая разница». Хм, улыбнуло.
Вобщем что из этого вышло:
У компонента есть обработчик события — DoWork. Имено там пишем код который будет выполняться в отдельном потоке.
Внимание! BackgroundWorker не покрывает проблему обращения к контролам, для этого следует использовать Invoke.
Следующий обработчик который меня заинтересовал, это RunWorkerCompleted. Данное событие не отработает если была вызвана отмена — метод CancelAsync().
Следующее, это конечно же реализация прерывание работы BackgroundWorker’a.
Для этого:
- Вызывается метод CancelAsync();
- Именно в той длинной операции используется следующий код:
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
* доплнительная информация на rsdn
Наверное все…
Месяцев 4-5 назад, я писал класс для парсинга Гугла. Собственно вот он, да, в нем есть что переделывать, а что? Достаточно отписаться и я возможно этим займусь
, а пока он позволяет следующее:
- Поддержка WebProxy;
- Изменение UserAgent’a;
- Поиск по всем результатам;
- Отбрасывать ссылки в которых содержится ключевое слово «google»;
- Устанавливать колличество выводимых результатов;
- Устанавливать начальную страницу, с которой будет начат парсинг;
- Используется сервис гугла, генерирующий минимальную по объему страницу;
Пример поиска, парсится 1 страница и первые 100 результатов:
var google = new GoogleParser("C#");
var result = google.GetResult();
var str = "";
foreach (var s in result)
{
str += s;
}
textBox1.Text = str;
Вот так читать все страницы:
var google = new GoogleParser("C#");
var str = "";
while (google.Read())
{
var result = google.GetResult();
foreach (var s in result)
{
str += s;
}
}
textBox1.Text = str;
