Очень понравилась статья, фактически это тот минимум, что надо знать для работы с регулярными выражениями. Правда в некоторых местах автор немного "ошибается" в описаниях, тут просто надо обратить внимание, что например на паттерн [^аеёиоуыэюя] будет матчится не только согласные, но и заглавные гласные, и цифры. в остальном статья просто супер!
ссылка
Тут буду писать, что узнаю нового. Проблемы, на решение которых я потратил много своего времени( может быть кто-то с помощью моего блога потратит меньше)
среда, 26 мая 2010 г.
понедельник, 5 апреля 2010 г.
Eclipse: resource is out of sync with the file system
Эти заметки надо потом объединить в одну, под общим названием "Настройка Eclipse под себя".
Итак первое неудобство, после svn-update, ну или если файлы проекта изменились извне eclips-а при попытке открытия файла возникает сообщение
Мне лень постоянно нажимать F5 или Refresh Project...
Итак: идем Window->Preferences->General->Workspase интересует галка "Refresh automatically"
я заодно выставил и автосохранение перед сборкой.
и text file encoding - UTF-8
NB!: Да, кстати, не зря это всё в меню Workspase находится, при переключении на другой воркспейс эти настройки теряются.
Итак первое неудобство, после svn-update, ну или если файлы проекта изменились извне eclips-а при попытке открытия файла возникает сообщение
resource is out of sync with the file system...бла-бла-бла, нажмите F5 для обновления
Мне лень постоянно нажимать F5 или Refresh Project...
Итак: идем Window->Preferences->General->Workspase интересует галка "Refresh automatically"
я заодно выставил и автосохранение перед сборкой.
и text file encoding - UTF-8
NB!: Да, кстати, не зря это всё в меню Workspase находится, при переключении на другой воркспейс эти настройки теряются.
суббота, 27 марта 2010 г.
В тему пятничного "ночного собеседования" ;-)
Очень понятное описание работы с INNER JOIN, LEFT JOIN, RIGHT JOIN
http://barulina.ru
http://barulina.ru
вторник, 9 марта 2010 г.
Проблемы с Mindows Mobile(Media Player)
Перестал тут на моем Asus P535 запускаться Media Player, соответственно(по логике MS) звонки я слышать перестал(в место мелодии звонка только один короткий писк) оказалось
"Причиной того, что wmplayer.exe не запускается, является то, что в каталоге ApplicationData\Volatile скопилось более тысячи каталогов начинающихся с XMEI* - все удаляем - и Windows media player запускается, звонки работают."
Получается, что MS решили, что нефиг тысячу раз открывать плеер, на тысячу первый раз он отказывается работать
"Причиной того, что wmplayer.exe не запускается, является то, что в каталоге ApplicationData\Volatile скопилось более тысячи каталогов начинающихся с XMEI* - все удаляем - и Windows media player запускается, звонки работают."
Получается, что MS решили, что нефиг тысячу раз открывать плеер, на тысячу первый раз он отказывается работать
четверг, 25 февраля 2010 г.
.NET получить номер версии
Задача Visual Studio не совсем вменяемым на мой взгляд( с помощью честно стыренного где-то JS скрипта и post-build Event) изменяет номер версии сборки. И вот мне захотелось его где-нибудь отобразить. Например мне очень часто приходится встречаться с такой ситуацией: приходит пользователь, говорит: "У меня вот то-то и то-то в программе не работает, а у Васи/Пети/etc. - работает." Теперь ответ на такой вопрос скорее всего сведётся к следующему: "а какую версию используете? посмотри в заголовке окна(например),1.0.0.0, ага, а Вася с Петей и Etc уже давно перешли 2.12.365.98729, и там эта функциональность была реализована".
Короче гордиться особо нечем, всё как обычно до безобразия просто, даже глупо было гуглить такое:
Да, совсем забыл, короче в этом примере мне надо вывести только 3 "разряда", номер ревизии врят-ли кого-то волнует
Короче гордиться особо нечем, всё как обычно до безобразия просто, даже глупо было гуглить такое:
System.Reflection.Assembly.GetCallingAssembly().GetName().Version.ToString(3)
* This source code was highlighted with Source Code Highlighter.Да, совсем забыл, короче в этом примере мне надо вывести только 3 "разряда", номер ревизии врят-ли кого-то волнует
Ярлыки:
.Net,
Application Version Number,
assembly,
dotNet,
reflection
четверг, 4 февраля 2010 г.
Serialization .net( основные требования)
Всё чаще стал использовать XML не только как хранилище контента, но и для хранения настроек программ.
Сейчас после того, как очередной раз поймал InvalidOperationException при сериализации решил написать для себя список требований к объекту:
1) должен иметь атрибут
Из основного вроде всё, если вспомню чего, потом допишу.
теперь частности:
если необходимо сериализовать класс-наследник, то у базового класса надо с помощью атрибута XmlInclude перечислить ему(базовому) все типы наследников примерно так:
очень хорошо сериализуются коллекции, я использую List, но думаю и с другими проблем быть не должно.Вот пример списка, где в качестве типа T - абстрактный класс:
Сейчас после того, как очередной раз поймал InvalidOperationException при сериализации решил написать для себя список требований к объекту:
1) должен иметь атрибут
[Serializable]
* This source code was highlighted with Source Code Highlighter.2)Должен иметь конструктор по-умолчанию(без параметров)Из основного вроде всё, если вспомню чего, потом допишу.
теперь частности:
если необходимо сериализовать класс-наследник, то у базового класса надо с помощью атрибута XmlInclude перечислить ему(базовому) все типы наследников примерно так:
[XmlInclude(typeof(Information)), XmlInclude(typeof(Episode))]
public abstract class Element
* This source code was highlighted with Source Code Highlighter.очень хорошо сериализуются коллекции, я использую List
[XmlArrayItem(typeof(Information)), XmlArrayItem(typeof(Episode))]
public List<Element> Actions
* This source code was highlighted with Source Code Highlighter.Просто указываем с какими элементами может иметь дело List
вторник, 6 октября 2009 г.
Как получить список всех полей(методов, etc) у Структуры(класса) в .Net
Дано: есть структура(несколько структур) с огромным количеством полей. задача: проделать однотипные действия с этими полями.
Сразу было понятно, что писать на каждое поле это действие - труд бестолковый и никому не нужный, кроме того, если потом кто-то захочет добавить/удалить поля исходной структуры, то потребуется переписывать заново код.
И тут, как говорится, нам на помощь приходит .net reflection
больше говорить нечего, исходник говорит сам за себя:
как нетрудно догадаться: mi.Name - это имя переменной(короткое имя)
а так mi.GetValue(rzu) - получается значение этой переменной в экземпляре этой структуры.
Ну, а так-бы получилось без использования этой чудо фичи:
//И ещё примерно 200 таких блоков на каждое поле структуры
PS:
У структуры можно получить всё, что угодно, например, можно получить вообще все члены для этого всего навсего используется чудо функция GetMembers();
Сразу было понятно, что писать на каждое поле это действие - труд бестолковый и никому не нужный, кроме того, если потом кто-то захочет добавить/удалить поля исходной структуры, то потребуется переписывать заново код.
И тут, как говорится, нам на помощь приходит .net reflection
больше говорить нечего, исходник говорит сам за себя:
FieldInfo[] fields = typeof(TRZU).GetFields();//Тут получили все поля структуры
foreach (FieldInfo mi in fields)
{
//...
ZTVarChanded(mi.Name, mi.GetValue(rzu).ToString());
}
* This source code was highlighted with Source Code Highlighter.
как нетрудно догадаться: mi.Name - это имя переменной(короткое имя)
а так mi.GetValue(rzu) - получается значение этой переменной в экземпляре этой структуры.
Ну, а так-бы получилось без использования этой чудо фичи:
- if (zt.iPosition != _zt.iPosition)
- {
- ZTVarChanded("iPosition", zt.iPosition.ToString());
- }
* This source code was highlighted with Source Code Highlighter.
//И ещё примерно 200 таких блоков на каждое поле структуры
PS:
У структуры можно получить всё, что угодно, например, можно получить вообще все члены для этого всего навсего используется чудо функция GetMembers();
Подписаться на:
Сообщения (Atom)