6/30/2007

Command Prompt внутри Visual Studio

VSCmdShell Toolэто Command Prompt, встроенный в Visual Studio.

После установки в Visual Studio см. в главном меню: View – Shell Windows (VsCmdShell).

Умеет работать с Ctrl+C и Ctrl+V; есть привычное выделение мышью.

 

Прощай, Command Prompt J, в котором в результате Ctrl+V появляется ^V, а для копирования текста надо вызвать контекстное меню, нажать Mark, выделить блок (а не текст), нажать Enter  ... это ж надо было такое придумать. Наверное, идея такого копирования лежала в основе допотопного *niх'а J, и реализовывал такое копирование тайный фанат этого самого *nix'a.

Каждый раз как я использовал такое копирование, отмечал, что это – тихий ужОс.

Guidance Automation

Как жизнь разработчика сделать проще?

Надо дать ему инструмент, который позволит сократить необходимое количество ударов пальцами по клавиатуре. Т.е. это средство должно само редактировать проект по-щучьему велению и по хотению разработчика. Вот таким средством и является Guidance Automation.

Основные принципы работы GA:

·         GA интегрирован в Visual Studio.

·         Диалог GA можно вызвать через контекстное меню.

·         GA содержит список заданий, которые можно выполнить над объектом (для которого было вызвано контекстное меню).

·         В результате выполнения определенного задания в Solution вносятся изменения. Например, в текущий класс добавляются методы. Или в Solution добавляется еще один проект. И т.д., и все, что угодно.

·         Задания можно создавать на основе готовых компонентов. Созданные задания отображаются в диалоге GA.

 

Guidance Automation Extensions

The Guidance Automation Extensions (GAX) enable you to run guidance packages, such as the Guidance Automation Toolkit or those included in Software Factories. You can use the Guidance Automation Toolkit (GAT) to author or customize guidance packages.

Guidance Automation Toolkit

The Guidance Automation Toolkit allows you to author guidance packages and software factories which expose reusable code and pattern assets directly in Visual Studio 2005. It is designed to simplify integrating reusable code into applications, by automating development activities that developers would usually perform manually.

 

P.S.

Software Factories является приоритетным направлением ... См. Where Software Architecture Goes from Here «While concepts like patterns and SOA are already or are becoming mainstream, software architecture continues evolving and expanding to new spaces. Although this article is too short to discuss all of the other software architecture trends which build on SOA, like model driven architecture (MDA) or software factories, you can find more information on the Software Factories page in the MSDN/Architecture Center.»

Skyscrapr - сайт для архитекторов ПО

Skyscrapr - site on MSDN where you can learn about software architects and architecture.  Whether you have a career aspiration to become a software architect, or you are wondering what architects in IT organizations are responsible for, Skyscrapr is the place to find out the answer.

 

FAQ с ответами на вопросы: Кто такие архитекторы? Что делают / чем занимаются архитекторы? Как стать архитектором?

Другие сайты по теме: MSDN/Architecture, The Architecture Journal, Related Sites.

Типы архитекторов: Solutions Architecture, Infrastructure Architecture, Enterprise Architecture.

Форум по архитектуре ПО: forum

Адреса, явки и пароли известных архитекторов: Architect Career Profiles.

Работа с командной строкой

Как можно организовать работу с командной строкой (подразумевается, что через командную строку программа получает необходимые данные).

 

Способ 1:

(код разбора строки и загрузки свойств находится внутри класса)

 

public class Host

{

    public static void Main(string[] args)

    {

        Util util = new Util(args);

        util.Start();

    }

}

public class Util

{

    public Util(string[] args)

    {

        // парсинг и валидация значений args[]

    }

    public void Start() {...}

}

 

Плюс: коротко и ясно.

Минус: если Util понадобится, например, в WF-активности, то при каждом вызове будет происходить парсинг и валидация значений args[].

 

Примечание: конструктор Util можно сделать без параметров, при этом использовать значение Environment.CommandLine.

 

Способ 2:

(отдельный immutable-класс с параметрами для класса Util)

 

public class Host

{

    public static void Main(string[] args)

    {

        UtilSettings us = new UtilSettings(args);

        Util util = new Util(us);

        util.Start();

    }

}

public class Util

{

    public Util(UtilSettings s) {...}   

    public void Start() {...}

}

 

public class UtilSettings

{

    public UtilSettings(string[] args) {...}

}

 

Плюс: избавились от минуса, который был в «Способ 1».

Минус: данные для UtilSettings передаются через конструктор. Если источников с данными будет несколько, то и конструкторов будет несколько. В итоге, чтобы понять что делать с данными, надо будет смотреть на количество и очередность параметров у конструкторов.

 

Способ 3:

(модифицированный UtilSettings из «Способ 2»)

 

public class UtilSettings

{

    private UtilSettings() { }

    public static UtilSettings FromCommandLine(string[] args) {...}

}

 

Плюс: избавились от минуса, который был в «Способ 2».

Минус: нет.

 

Теперь, если понадобится загрузить параметры, например, из xml-файла, то в UtilSettings надо просто добавить соответствующий метод, например,

public static UtilSettings FromXml(string path) {…}

Компоненты для работы с HTTP, FTP, SMTP and POP3

Вот эти «хлебные крошки»* MSDN Home > Visual Studio > Extending Visual Studio > Affiliate Home Page ведут к набору компонентов для работы с HTTP, FTP, SMTP and POP3.

 

Компания RemObjects предлагает «Internet Pack 'Vinci' for .NET»:

 

The main goal of Internet Pack is to abstract the already powerful and relatively easy to use Socket classes of the .NET framework to provide a library that makes it easy to implement the different communication protocols commonly used on the Internet, as well as to implement custom forms of network communication. Built on top of this flexible and highly scalable architecture, Internet Pack provides ready-to-use client and server components for many protocols, including HTTP, FTP, SMTP and POP3, and more components are added over time. Internet Pack for .NET is available as a free download including full source, under the Internet Pack License.

Product Features:

  • Lightweight and comfortable to use base framework
  • Flexible and highly scalable architecture
  • Extendable Connection class allows you to easily integrate custom encryption or compression solutions
  • Extendable FTP Server framework and VirtualFTP sample implementation
  • CommandBasedServer and Client based components allow you to easily implement your own command based protocols (such as SMTP, FTP Command Connection, etc.)

Пока не смотрел, но судя по описанию, там есть на что посмотреть.

То что есть исходник – это хорошо. Но можно и без него обойтись, если сборки не обфусцированы (см. Reflector) ;)

 

* «хлебные крошки» = navigation path — which is also known as a breadcrumb or eyebrow — that shows the user the current page location and displays links as a path back to the home page.

Windows Live расширяется

В Windows Live скоро появятся новые сервисы:

 

Windows Live Photo Gallery

is a stand-alone service that upgrades Windows Vista's Windows Photo Gallery. Offered at no charge, Windows Live Photo Gallery enables both  Windows Vista and Windows XP SP2 customers to share, edit, organize and print photos and digital home videos).

 

Windows Live Folders

will provide customers with 500 megabytes of online storage at no charge.

 

Так сказал Chris Jones (Corporate Vice President, Windows Live Experience Program Management).

А еще он сказал: we want to people to be able to connect to the content they want regardless of what device they're on – be it a PC at home or work, or a phone. ... We're taking proactive steps to make this a reality.

 

P.S.

Наверное, не пройдет и года, как Microsoft объявит о выходе .NET-процессора с названием, например, «Кристаллический .NET» или «Силиконовый .NET». Скорее всего .NET-процессоры будут использоваться не только в  телефонах ;)