C# Finalize/Dispose pattern

13 июл. 2011 г. | | |

Два интересных обсуждения о Finalize/Dispose в C#  на StackOverflow (http://stackoverflow.com/questions/898828/c-finalize-dispose-pattern/898867#898867) и Хабре (http://habrahabr.ru/blogs/net/122639/)

Боян про отладку

8 июл. 2011 г. | | |

Злободневно с баша

15 июн. 2011 г. | | |


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

YYY: Причем из этих двух молотков, один был бы самодельной киянкой!

XXX: Точно. А еще кто-нибудь заявил бы, что все ламеры, а вместо гвоздя нужно использовать шуруп.

YYY: И предложил бы свой вариант самореза с правой резьбой под шестигранную отвертку с логотипом Sun…

XXX: А потом кто-нибудь прийдет и скажет, что посадил все на суперклей и вроде стоит.

YYY: А кто то будет причитать про то, что раньше вообще без гвоздей строили и стояло века…

Сравнительное тестирование производительности платформ .Net, Java и Mono

8 июн. 2011 г. | | |

Статья на хабре о сравнении производительности платформ .Net, Java и Mono
http://habrahabr.ru/blogs/development/120090/

RegexOptions

25 мая 2011 г. | | |

Есть файл с содержимым вида

<Book>
   <Page number='1'><![CDATA[line1
                                line2
                                line3]]>
   </Page>
   <Page number='2'><![CDATA[line1]]>

   </Page>
</Book>


Нужно распарсить содержимое через RegExpr. Вроде ничего сложного. Тест для класса PageParser должен срабатывать:

//PageParser
class PagePaerser
{
  public static IList<Page> Parse(string xml)
  {
     IList<Page> pages = new List<Page>();
     string pattern = "<Page number='(?<number>\\d*?)'><\\!\\[CDATA\\[(?<content>.*?)\\]\\]><\\/Page>";
     var matches = Regex.Matches(xml, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
     if (matches.Count>0)
     {
        foreach(Match match in matches)
        {
            pages.Add(new Page()
            {
              content = match.Groups["content"].Captures[0].Value,
              number = int.Parse(match.Groups["number"].Captures[0].Value)
           });
        }
    }
    return pages;
  }
}


[TestMethod]
public void ParseMethod_ListOfPages_Test()
{
   var parsed_pages = PageParser.Parse(@"
<Book>
      <Page number='1'><![CDATA[line1
                                  line2
                                  line3]]>
      </Page>
      <Page number='2'><![CDATA[line1]]>

      </Page>
   </Book>

");
   Assert.AreEqual(2, parsed_pages.Count);
}

Но тест не срабатывает. Дело в том, что в RegExpr для обработки multiline-строк, нужно вместо флага RegexOptions.Multiline устанавливать RegexOptions.Singleline, который меняет режим символа "." на улавливание совпадений со всеми символами, а не всех символов, кроме новой строки (\n)

Coding drunk

24 мая 2011 г. | | |