Сайт для программистов

воскресенье, 29 июня 2008 г.

Солянка

Сегодня не будет какой-то конкретной темы. Поговорим понемногу обо всем. Начнем с поисковой системы. Когда-то давно в сети (лет 10 назад) появилась поисковая система, которая искала запросы в исходных кодах. Я в то время увлекался программированием на Visual Basic 5.0/6.0 и тем поисковым сайтом я пользовался достаточно регулярно. К сожалению, уже не помню адрес этого сайта. Сейчас появились другие поисковые системы, которые также ищут ответы в исходных кодах. Но я ими не пользуюсь. Мне хватает обычного Google. Но недавно наткнулся на интересный проект. На этот раз предлагают искать ответы в текстах книг по программированию. Адрес проекта - http://www.codefetch.com.
Выбираем язык программирования, вбиваем запрос и вперед. Понятно, что поиск идет среди англоязычных книг. Возьмите на заметку.
Вторая тема - .NET Compact Framework. Очень интересное предложение сделал в своем блоге программист Крис Крафт. Он обещал в течение месяца написать 30 полезных программ, по одной программе в день. И свое обещание сдержал. На данный момент уже выложено 27 программ. Все программы поставляются в двух вариантах - готовые приложения и исходные коды. Найти это чудо можно по адресу http://www.cjcraft.com/blog/default,month,2008-06.aspx.
Меня поразила схожесть наших интересов. Одна треть этих программ уже имелась в моем арсенале. Вторую треть программ я только собирался написать. Теперь сэкономлю время и изучу готовые примеры. А остальная часть программ - это приложения, которые я хотел бы написать, но не представлял, с чего начинать. Эти примеры меня восхитили больше всего. С удовольствием изучу их, найти бы только время на изучение.
Третья тема - изучение IDE. Недавно стал нажимать на все кнопочки и менюшки в Visual Studio и обнаружил в ней новое окно Document Outline. Честно признаюсь, не знаю, когда это окно появилось в Visual Studio, может оно всегда там было? Окно это можно вызвать через View Other Windows или через Ctrl+Alt+T.
В этом окне как на ладони видны все элементы управления проекта. Их можно перемещать, удалять и добавлять из панели инструментов. Я пока не оценил практическую ценность окна, так как использовал простые проекты для исследования. Но, что-то мне подсказывает, что это полезная вещь в хозяйстве.
Четвертая тема - функции Windows API. Недавно я закончил писать пример выключения компьютера при помощи функции ExitWindowsEx. Чтобы использовать эту функцию в Windows XP/Vista, необходимо также вызывать функции GetCurrentProcess, OpenProcessToken, LookupPrivilegeValue, AdjustTokenPrivileges. Я не стану приводить этот пример здесь. Он будет доступен пользователям, которые приобрели мой справочник по фунциям Windows API. Остальные могут поискать ответ самостоятельно в интернете. Следующими функциями для изучения станут функции Windows Vista, связанные с Aero Glass. Немного об этих функциях было сказано в апрельском номере журнал MSDN Magazine за 2007 год. Надо это дело разобрать по косточкам и поместить в справочник.
Есть еще несколько интересных тем для разговора. Но, я, пожалуй, оставлю их до следующего раза.
Удачного вам программирования!

вторник, 24 июня 2008 г.

Ангел мой, пойдем со мной: ты впереди, я - за тобой

Если вы смотрели футбольный матч Россия-Голландия по телевизору, то, возможно, обратили внимание, как рассказывал о ходе встречи телекомментатор Геннадий Орлов. Еще до начала матча неожиданно стали обсуждать, кто должен стать комментатором этой встречи и на каком канале ее показывать. Все боялись вспугнуть удачу. В конце концов все-таки решили не переносить показ матча на другой канал, но попросили поработать на матче Орлова, считая его фартовым комментатором. И он выдал такой репортаж! Постоянно путал фамилии футболистов, оговаривался, обращался к судье с вопросами и замечаниями. В дополнительное время немного напутал со временем и ждал окончания матча на 115 минуте вместо положенных 120 минут. В конце концов ему подсказали и он поправился и извинился. Но, кульминацией его репортажа стала фраза в конце матча
Ангел мой, пойдем со мной: ты впереди, я - за тобой.
На моей памяти это первый случай, когда в эфире ведущий спортивного канала произносит своеобразный оберег. Это была бомба. На многих спортивных форумах обсуждали этот удивительный репортаж. Один из участников форума даже назвал его белым магом, в отличие от другого популярного комментатора, названного черным магом. Должен признаться, меня тоже поразила эта фраза. От нее повеяло чем-то таким необыкновенным...
Удачного вам боления!
P.S. А вы обратили внимание, что у нас комментаторы носят птичьи фамилии: Орлов, Гусев, Уткин.

суббота, 21 июня 2008 г.

Советы Сары Форд на русском

Постоянные читатели моего блога помнят, что я предлагал ознакомиться с советами Сары Форд, которые она публиковала с завидной периодичностью на своей англоязычной страничке. У меня для вас хорошая новость. Эти же советы теперь можно будет читать и на русском языке. Найти это чудо можно по адресу http://blogs.msdn.com/rusaraford/. Надеюсь, советы на русском будут также появляться регулярно.
Первый совет был посвящен инкрементному поиску. Кстати, такой же совет имеется и в моей книге C#. Советы программистам (глава Интегрированная среда разработки (IDE)).
P.S. А сборная России по футболу уже в полуфинале Чемпионата Европы!
Удачного вам боления!

суббота, 7 июня 2008 г.

Админ ли ты?

Продолжаю читать книжку Защищенный код для Windows Vista. Оказывается, если вы регистрировались в системе как Администратор, то все равно администратором по сути не являетесь. По умолчанию система дает вам права стандартного пользователя. Если вам необходимо выполнить административную задачу, то система предложит вам повысить свои права. Срабатывает механизм UAC (контроль учетных записей пользователей), который так раздражает многих пользователей. Автор книги рекомендует использовать системную функцию IsUserAnAdmin для проверки ваших текущих прав. К счастью, синтаксис этой функции очень прост и мне не составило труда написать объявление этой функции для C# через механизм P/Invoke:
[DllImport("shell32.dll")]
private static extern bool IsUserAnAdmin();

// Является ли пользователь администратором
Console.WriteLine("Вы админ?: {0}", IsUserAnAdmin().ToString());


Если запустите эту программу, то можете убедиться, что вы не являетесь администратором (False). Теперь найдите исполняемый файл проекта в Проводнике, щелкните правой кнопкой для вызова контекстного меню и выберите команду Запуск от имени администратора. Теперь программа будет выводить значение True. Вы повысили себе права до уровня администратора ручным способом.
Существует и другой аспект. Предположим, вы сами хотите реализовать возможность повышения уровня привилегий в своей программе. В таком случае воспользуйтесь следующим кодом:

Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo(@"cmd.exe");
psi.UseShellExecute = true;
psi.Verb = "runas";
p.StartInfo = psi;
p.Start();


В приведенном примере показано, как можно запускать новый процесс с повышенными привилегиями.

Итак, после прочтения очередных страниц книги, мы познакомились с новой функцией Windows API IsUserAnAdmin, которую я сразу же поместил в свой справочник по функциям Windows API и узнали, как программно повышать права при вызове нового процесса.
Удачного вам программирования!
P.S. Чемпионат Европы по футболу стартовал. Удачного вам боления!