Мысли вслух…

Метка: C#

Определение ТИЦ C#

Пользователь Июн.30.2009. Категория Development

Сегодня на ачате чувак попросил перевести с 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]; // Вот оно счастье...
}

Вот что из этого вышло:
(читать дальше…)

2 комментария : дальше...

Live Status: Failed

Пользователь Июн.02.2009. Категория Weekdays

Грубо говоря утро началось с того что в ~8:10/20 оказался на рабочем месте, почитал заметки на хабре, касательно информационной безопасности.

Ближе к 9 договорился с однокашниками ехать в Политех.

Подъехал к остановке, прождал минут 10, звоню… «А мы уже тут, тебя не дождались и поехали» :blink:

В голове пронеслось «мда…», ну да ладно, сел на 43-й маршрут, доехал.

С часик наверное, непонятно зачем бегали по всему главному корпусу, потом пошли в 1-ый корпус, там-то у меня и должна была быть лабораторная работа по ТЭЦ брррр…

Лаборанта нет, так что облом, сегодня все скидывались, собирали на экзамены. :biggrin:

Понравилась фраза, наподобие — «Хм, а что в списке так мало людей? Где все остальные?» :lol:

А вчера…

(читать дальше…)

Оставить комментарий :, , дальше...

BackgroundWorker или чем я сегодня занимался.

Пользователь Май.23.2009. Категория Development, Weekdays

Утро началось для меня часов в 8, когда сестра проснулась и начала собираться на работу.  :wall:

Встал и сразу ощутил боль в шее, больно поворачивать голову вправо. Такс, пора подушку убирать.  :twisted:

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

Решил что пора заняться рефакторингом, причем солидным.

Так же взглянул в сторону XAML, по после 20-ти минут, отложил до лучших времен. Не совсем понял как допустим у объекта ListView изменить коллекцию колонок.  :wall:

Начал кординально переписывать проект, и сразу же задумался о потоках, оно в принципе многопоточно, за исключением того что основной поток все равно вешается и это приводит к «эффекту зависшего окна» :sad: .

Начал думать как все обойти, думать долго не пришлось, в принципе знал о классе BackgroundWorker *, но почему-то не использовал его :dont_know: .

Начал все прикручивать, разбирать и т.п. Вобщем за сегодня ~1000 строк кода я налопатил, немного мне это надоело. Пошел смотреть TV, а именно программу «Большая разница». Хм, улыбнуло.

Вобщем что из этого вышло:

У компонента есть обработчик события — DoWork. Имено там пишем код который будет выполняться в отдельном потоке.

Внимание! BackgroundWorker не покрывает проблему обращения к контролам, для этого следует использовать Invoke.

Следующий обработчик который меня заинтересовал, это RunWorkerCompleted. Данное событие не отработает если была вызвана отмена — метод CancelAsync().

Следующее, это конечно же реализация прерывание работы BackgroundWorker’a.

Для этого:

  1. Вызывается метод CancelAsync();
  2. Именно в той длинной операции используется следующий код:
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}

* доплнительная информация на rsdn

Наверное все…

Месяцев 4-5 назад, я писал класс для парсинга Гугла. Собственно вот он, да, в нем есть что переделывать, а что? Достаточно отписаться и я возможно этим займусь  :wink: , а пока он позволяет следующее:

  • Поддержка 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;

скачать исходник класса

7 комментариев :, , дальше...

Поиск

Список друзей