Полезные CSS3 стили

Полезные стили CSS3, которые можно использовать для верстки макетов для современных браузеров.
Например, скругленные края:

.box-radius-1{
    -webkit-border-radius: 50px;
    -moz-border-radius: 50px;
    border-radius: 50px;
}

Примеры кода и результата далее:

Читать далее «Полезные CSS3 стили»

Замена InvokeRequired в WPF

Многие, кто занимается многопоточным программированием в Win.Forms, должны хорошо знать, что, для изменения состояния какого либо контрола из потока его — контрол — не создававшего , обязательно должно проверяться свойство контрола InvokeRequired. Код ниже, который может смутить новичков, несомненно давно уже отложился в памяти программистов неоднократно имевших дело с потоками: Читать далее «Замена InvokeRequired в WPF»

Парсим ссылки без nofollow и noindex

Недавно встала необходимость спарсить из HTML документа все ссылки, не содержащие в себе атрибут rel=nofollow и не закрытые в noindex.

Обычно, эти ссылки выглядят как то так:

<noindex><a href=»http://wwwexample.com» rel=»nofollow»>текст ссылки</a></noindex>

Задача, как может показаться тривиальная. И правда, отсечь можно простейшей регуляркой типа:

<noindex.*?/noindex>

Но вот nofollow заставил меня поломать голову.

Для начала я решил что простой регулярки типа

<a.*?nofollow.*?>.*?</a>

Но на практике оказалось, что такой вариант, жадно съедает все между <a и /а> (пока не доберется до nofollow), если встречает ссылку не содержащую nofollow.

Поискав на просторах интернета решение своей задачи, ни чего путного так и не нашел, пришлось немножко напрячь голову, чтобы придумать как сделать так, чтобы получить все ссылки, не содержащие этого атрибута.
И вот что получилось в итоге:

<[^nofollow]*href=\»([^\»]*)\»[^nofollow]*>.*?</a>

Такая регулярка собирает все ссылки, не содержащие упоминания nofollow.

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