Denis Gladkikh
Russian   |  English

Выбранный тег: C#

Страница  1  2  3  4  

Тестирование NHibernate приложений на примере MbUnit

Несколько раз встречал подобный вопрос: как тестировать приложения, использующие ORM NHibernate, точнее встречал проблемы с тестированием на форумах GotDotNet. Для меня проблема не очень понятна, вроде всегда было все просто. Но все же опишу небольшой пост об этом, чтобы в будущем можно было ссылаться на него.



Linq To Twitter: Считаем слова, хеш-теги и собеседников сами

Недавно в сети начала гулять ссылка на проект http://tweetcloud.icodeforlove.com/, который мог подсчитать количество используемых слов в ваших сообщениях в twitter и нарисовать некий граф. Но у данного проекта было несколько больших недостатков: русские слова не считались, после подсчета он писал в tweet – спамил про себя. Может быть и еще какие то недостатки: первых двух мне хватило, чтобы не лезть смотреть этот проект. Но, вспомним чудесный продукт LinqToTwitter, о котором я уже как то писал в своем блоге. Ну и понятно, что подсчитать количество слов не составит особого труда.

Потому, берем WPF + LinqToTwitter, пару вечеров и наше облако тегов готово:

Capture

Сразу скажу, что пока писал меня вроде пару раз забанили на TwitterAPI (с ним, вроде, должен работать LinqToTwitter), я добавил Thread.Sleep(200) в промежутки запросов, чтобы хоть как то разгрузить, но проблемы остались – бывают реже, но бывают, так что учтите (не увлекайтесь). После бана около суток не будут работать клиенты. У меня 800 твиттов грузятся и обрабатываются около минуты, время рассчитайте сами – сколько вам потребуется, чтобы подсчитать ваши слова.



Windows 7 & DWN: знаете ли вы, что не все окна должны подчиняться Flip3D и Aero Peek

Вы, наверняка, знаете, что в Vista и Windows 7 существует функция Flip3D, а в Windows 7 еще и Aero Peek.

Aero Peek Flip3D

Но вы, наверняка, не знаете, что можно заставить ваше окно (приложение) не подчиняться правилам для всех окон в данных возможностях Windows. Для этого следует изучить Desktop Window Manager API.




Работа с окнами как в Windows 7 при помощи hotkeys: Win + [Up|Down|Left|Right]

В Windows 7 появилась очень удобная возможность - позиционирование окна при помощи горячих клавиш:

  • Win + Up - максимизация окна;
  • Win + Left - прикрепить окно к левому краю рабочего стола;
  • Win + Right - прикрепить к правому краю;
  • Win + Down - вернуть окно в нормальное состояние или свернуть.

Функциональность данная очень удобная, но, к сожалению еще не у всех есть возможность использовать данную версию Windows, либо может не на всех компьютерах. Такое же положение было у меня весной, когда была только Beta и Release Candidate версии Windows 7. Потому я решил выделить несколько вечеров и написать небольшое приложение добавляющее данную возможность в более ранние версии Windows. Данной программой я уже делился со всеми и на данный момент уже ей не пользуюсь, но все же хочу ею поделиться с сообществом еще раз (ведь тема Windows 7 сейчас еще более актуальна, а программу видели очень мало народу), так как раньше этого не делал из-за того что и не было такой возможности. Кроме того, что программа добавляет функционал по позиционированию окон, так же есть пару дополнительных возможностей - перемещение активного окна при помощи горячих клавиш, а так же перемещение окна между мониторами при помощи горячих клавиш. Горячие клавиши можно настроить.

Историю данного проекта можно просмотреть на моем блоге в LiveJournal:

Программа написана на .NET на языке C#, потому, конечно же, ОЗУ используется больше чем необходимо (бывает и около 16Mb). Данное приложение можно использовать для изучения работы с окнами в Windows и регистрации горячих клавиш в Windows.

Исходные код изначально был размещен на Google Code, а потом и на CodePlex (просто ради интереса, как выглядит и работает CodePlex), там же вы можете найти собранные версии. Для работы программы необходим Microsoft Framework 3.5 SP1 (Для него он был собран).

Progg it



Интегрируемся с Twitter

Давайте сначала обозначим, что такое Twitter.

Twitter – это бесплатный интернет-сервис, представляющий собой систему микроблогов, позволяющий пользователям отправлять короткие текстовые заметки (до 140 символов), используя веб-интерфейс, SMS, службы мгновенных сообщений или сторонние программы-клиенты (http://ru.wikipedia.org).

Второй вопрос, а зачем он нужен вообще? Просто общаться с друзьями? Это как вариант, но все таки существуют более удобные сервисы для обмена сообщениями. Скорее всего для публикацией и слежением за новостями (как личные, так и публичные).

Итак, если у вас есть некий интернет магазин, или сайт компании, на котором вы публикуете новости, то можно создать и twitter аккаунт, для того, чтобы дублировать туда информацию о выходе новых публикаций на сайте (как новости, так и поступление новой продукции), или вы можете прикрутить к своему блогу возможность публиковать в твиттере информацию о поступлении новых топиков (есть готовые сервисы, как http://twittsync.com/, работает на Microsoft Azure). Так же можно использовать твиттер “не по назначению” – вы можете создать некий пустой аккаунт, который будет публиковать, к примеру, состояние вашего компьютера, через Direct Message на ваш аккаунт или просто к себе на главную – один из примеров: ваш провайдер требует деньги за белый IP адрес, в противном случае он назначает вам адрес динамически, и каждые 24 часа вас отрубает (это для тех, кто использует роутеры) и вы хотите в любое время (например, с работы) узнавать какой у вас IP адрес для того чтобы зайти на свой домашний компьютер удаленно.

Следующий вопрос, сложно ли это сделать?

Легко! Можно пойти немного по более сложному пути и изучать TwitterAPI самому, тогда вам ни от чего не нужно будет зависеть, для начала тогда нужно воспользоваться статьей – Michael C. Kennedy – Building a Twitter Application in .NET, путь попроще – использовать готовое решение LINQ to Twitter (я им и воспользуюсь).



Динамическая компиляция кода в C#

Использовать компилятор из кода C# достаточно просто. А вот зачем – это другой вопрос :).

Hello World

Напишем первый простой пример. Создаем консольное приложение и напишем следующий код:

using System; 
using System.CodeDom.Compiler; 
using System.Collections.Generic; 
using Microsoft.CSharp; 
 
namespace ConsoleCompiler 
{ 
    internal class Program 
    { 
        private static void Main(string[] args) 
        { 
            // Source code для компиляции 
            string source = 
            @" 
namespace Foo 
{ 
    public class Bar 
    { 
        static void Main(string[] args) 
        { 
            Bar.SayHello(); 
        } 
 
        public static void SayHello() 
        { 
            System.Console.WriteLine(""Hello World""); 
        } 
    } 
} 
            "; 
 
            // Настройки компиляции 
            Dictionary<string, string> providerOptions = new Dictionary<string, string> 
                { 
                    {"CompilerVersion", "v3.5"} 
                }; 
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions); 
 
            CompilerParameters compilerParams = new CompilerParameters 
                {OutputAssembly = "D:\\Foo.EXE", GenerateExecutable = true}; 
 
            // Компиляция 
            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source); 
 
            // Выводим информацию об ошибках 
            Console.WriteLine("Number of Errors: {0}", results.Errors.Count); 
            foreach (CompilerError err in results.Errors) 
            { 
                Console.WriteLine("ERROR {0}", err.ErrorText); 
            } 
        } 
    } 
}

Запускаем и проверяем:

First Sample

Первое, на что стоит обратить внимание – это использование двух пространств имен (namespace):

  • Microsoft.CSharp
  • System.CodeDom.Compiler

В данных классах и содержится ключ к возможности компиляции. В нашем примере мы указываем что компилировать будем под .NET Framework 3.5, а так же указываем что мы хотим получить на выходе – Foo.exe, с возможностью запуска данного приложения.



WPF - использование навигации по страницам, добавление контролов в NavigationWindow

В WPF существует возможность создавать приложения с возможность навигации, то есть с использованием Navigation объектов, таких как Page, NavigationService и NavigationWindow. Большинство примеров на MSDN отображает, как использовать такие объекты в XBAP приложениях, но никто не запрещает нам и создавать клиентские приложения с использованием навигации по страницам.



WPF – MenuItem и важное свойство CommandTarget

Предположим перед вами стоит простая задача – сделать Toolbar контрол, который будет отображаться на каждой странице и он так же будет состоять из меню. Один из вариантов – это разместить все необходимое на UserControl и размещать данный контор на каждом окне.




Страница  1  2  3  4