неділю, 27 березня 2011 р.

Default Documents in IIS 7


<system.webServer>
<defaultDocument>
<files>
<clear/>
<add value="~/Default.htm"/>
</files>
</defaultDocument>
<system.webServer>

четвер, 24 березня 2011 р.

Маленький helper-метод


public static bool eq(this string s, string s2)
{
return string.Compare(s, s2, true) == 0;
}

Use:

if(url.eq("/Default.aspx"))
{
...
}

вівторок, 22 березня 2011 р.

CultureInfo

en-GB - специфическая
ro - нейтральная

var c = "ro";

//создаем специфическую с нейтральной
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(c);
//можно использовать нейтральную, например, Strings.ro.resx
Thread.CurrentThread.CurrentUICulture = new CultureInfo(c);

пʼятницю, 18 березня 2011 р.

.NET парсер HTML

Стояла задача: вытянуть данные из таблицы в .mht документе.
Сначала подумал решить на C#+Regex, но потом нарыл парсер Html Agility Pack. Спасибо автору:).


Вот как я это сделал:

private void MainForm_Load(object sender, EventArgs e)
{
try
{
var file = @"C:\демпинг.mht";

var contentHex = File.ReadAllText(file, Encoding.GetEncoding(1251));

var content = Regex.Replace(contentHex, @"=[0-9A-F]{2}", m => HexStringToUtf8(m.ToString().Substring(1)));

var doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(content);

var table = doc.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/table[1]");

if(table == null) throw new Exception("data not found");

var rows = table.SelectNodes("tbody/tr").Skip(1).ToList();

var data = (from r in rows
let tds = r.SelectNodes("td")
select new
{
N = tds[0].InnerText,
Group = tds[1].InnerText,
Product = tds[2].InnerText,
OurPrice = tds[3].InnerText,
AveragePrice = tds[4].InnerText,
Difference = tds[5].InnerText,
DifferencePercent = tds[6].InnerText,
Offers = tds[7].InnerText,
Shops = tds[7].Attributes["title"].Value,
MinPrice = tds[8].InnerText,
MaxPrice = tds[9].InnerText
}).ToList();

grid.DataSource = data;
}
catch(Exception exc)
{
MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private string HexStringToUtf8(string hexString)
{
var bytes = new List();

for(int i = 0; i <= hexString.Length - 2; i += 2)
{
bytes.Add(byte.Parse(hexString.Substring(i, 2), System.Globalization.NumberStyles.HexNumber));
}

var str = Encoding.GetEncoding(1251).GetString(bytes.ToArray());

return str;
}

Результат:

четвер, 10 березня 2011 р.

Портативные версии основных браузеров

Портативные версии основных браузеров

Float blocks





/* Firefox 2 */
display: -moz-inline-stack;

/* IE 8, Firefox 3, Opera, Safari, Chrome */
display: inline-block;
vertical-align: top;

/* IE 6 и 7 */
zoom: 1;
*display: inline;


Source

пʼятницю, 4 березня 2011 р.

Несколько полезных примеров регулярок

foo – Слово foo
^foo – Наичнается с foo
foo$ - Кончается с foo
^foo$ - Точное совпадение с foo
[abc] – a, b или c
[a-z] – Любая строчная буква
[^A-Z] - Любой символ не в верхнем регистре
(gif|jpg) - Совпадает либо gif либо jpeg
[a-z]+ - Одна или более строчных букв
[0-9.-] - Любое число, точка или минус
^[a-zA-Z0-9_]{1,}$ – Любое слово, в котором как минимум одна буква, число или _
([wx])([yz]) - wy, wz или xy, xz
[^A-Za-z0-9] – Любой символ (не буква и не цифра)
([A-Z]{3}|[0-9]{4}) - Совпадает три буквы или четыре цифры

Взято тут