LIFE

clark94.egloos.com

포토로그




.NET Framework 4 - Windows Presentation Foundation WPF

.NET 차세대 버전인 4에 포함된 WPF 에 대해서 검색하다가 찾은
온라인 MSDN에서 등록된 .NET Framework 4 beta 2 에서 추출한 내용이다.

http://msdn.microsoft.com/en-us/library/bb613588(VS.100).aspx#new_controls

What's New in WPF Version 4

New Controls

WFP 에 비즈니스 어플리케이션을 쉽게 개발할 수 있는 새로운 3개의 컨트롤을 추가했다.
이 컨트롤들은 Silverlight 와 100% 호환 가능하다. 이로 인해서 개발자들이 코드를 재사용 가능할 뿐만 아니라 클라이언트 및 웹 버전의 어플을 빠르게 만들 수 있다.

DataGrid
Calendar
DatePicker

  Visual State Manager

WPF 는 ControlTemplate 안에 Visual State 들의 전환을 위한 더 나은 Support 을 제공한다. VisualStateManager 클래스와 이를 support 하는 클래스들이 추가되었고 이로 인해 MS Expression Blend 에서 컨트롤의 Visual State 에 따라서 외모를 정의할 수 있게 되었다. 예를 들어, Button 컨트롤이 Pressed State 에 있을 때 외모를 정의할 수 있게 되었다.

For more information about creating a ControlTemplate that uses the VisualStateManager for an existing control, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate. For information about creating a new control that uses the VisualStateManager, see Creating a Control That Has a Customizable Appearance.

NoteNote

Elements can take advantage of the VisualStateManager outside of a ControlTemplate by using the GoToElementState method.

  Touch and Manipulation

Elements in WPF now accept touch input. The UIElement, and UIElement3D, and ContentElement classes expose events that occur when a user touches an element on a touch-enabled screen. The following events are defined on UIElement and respond to touch input. Note that these events are also defined on UIElement3D and ContentElement.

PreviewTouchDown

TouchDown

PreviewTouchMove

TouchMove

PreviewTouchUp

TouchUp

GotTouchCapture

LostTouchCapture

TouchEnter

TouchLeave

In addition to the touch events, the UIElement supports manipulation. A manipulation is interpreted to scale, rotate, or translate the UIElement. For example, a photo viewing application might allow users to move, zoom, resize, and rotate a photo by touching the computer screen over the photo. The following events have been added to UIElement:

ManipulationStarted

ManipulationDelta

ManipulationInertiaStarting

ManipulationCompleted

ManipulationBoundaryFeedback

To enable manipulation, set the IsManipulationEnabled to true. For more information about touch, see Walkthrough: Creating Your First Touch Application.

  Graphics and Animations

Several changes have been made related to graphics and animations.

Layout Rounding

When an object edge falls in the middle of a pixel device, the DPI-independent graphics system can create rendering artifacts, such as blurry or semi-transparent edges. Previous versions of WPF included pixel snapping to help handle this case. Silverlight 2 introduced layout rounding, which is another way to move elements so that edges fall on whole pixel boundaries. WPF now supports layout rounding with the UseLayoutRounding attached property on FrameworkElement.

Cached Composition

By using the new BitmapCache and BitmapCacheBrush classes, you can cache a complex part of the visual tree as a bitmap and greatly improve rendering time. The bitmap remains responsive to user input, such as mouse clicks, and you can paint it onto other elements just like any brush.

Pixel Shader 3 Support

WPF 4 builds on top of the ShaderEffect support introduced in WPF 3.5 SP1 by allowing applications to now write effects by using Pixel Shader (PS) version 3.0. The PS 3.0 shader model is more sophisticated than PS 2.0, which allows for even more effects on supported hardware.

  Text

Several changes have been made related to text.

New Text Rendering Stack

The WPF text rendering stack has been completely replaced. This change brings improvements to text rendering configurability, clarity, and support for international languages. The new text stack now supports explicitly selecting aliased, grayscale, or ClearType rendering modes. The text stack now supports display-optimized character layout, to produce text with sharpness comparable to Win32/GDI text. The new text stack allows optimizing text hinting and snapping for either animated or static text. The new text stack also supports fonts with embedded bitmaps to be substituted for smaller font sizes, allowing many East Asian fonts to render with sharpness comparable to Win32/GDI text.

Selection and Caret Customization

  Binding

Various changes and enhancements have been made related to binding.

Bind to commands on InputBinding

You can bind the Command property of an InputBinding class to an instance that is defined in code. The following properties are dependency properties, so that they can be targets of bindings:

InputBinding..::.Command

InputBinding..::.CommandParameter

InputBinding..::.CommandTarget

KeyBinding..::.Key

KeyBinding..::.Modifiers

MouseBinding..::.MouseAction

The InputBinding, MouseBinding, and KeyBinding classes receive data context from the owning FrameworkElement.

Bind to Dynamic Objects

WPF supports data binding to objects that implement IDynamicMetaObjectProvider. For example, if you create a dynamic object that inherits from DynamicObject in code, you can use markup extension to bind to the object in XAML.

Bindable Text Run

Run..::.Text is now a dependency property. The main advantage is that it now supports one-way bindings. It also supports other features of dependency properties, such as styling and templating.

  XAML Browser Applications

Two features have been added to XAML browser applications (XBAPs).

HTML-XBAP Script Interop

You can now communicate with the Web page containing the XBAP when the application is hosted in a HTML frame. The XBAP can get deep access to the HTML DOM and can handle DOM events. For more information see BrowserInteropHelper.

Full-Trust XBAP Deployment

If your XBAP requires full trust, the user will now automatically receive the standard ClickOnce elevation prompt when they install the application from the intranet or one of their browser's trusted sites.

For more information on both these features, see WPF XAML Browser Applications Overview.

  WPF and Windows

The Windows 7 taskbar provides enhanced functionality that enables you to use the taskbar button to communicate status to a user and expose common tasks. New types in the System.Windows.Shell namespace provide managed wrappers for functionality in the Windows 7 taskbar and manages the data passed to the Windows shell. For example, the JumpList type allows you to work with Jump Lists and the TaskbarItemInfo type allows you to work with taskbar thumbnails.

WPF dialog boxes on Windows 7 and Windows Vista now support the look and feel of the Windows 7 and Windows Vista style, which includes custom places. For more information, see the FileDialogCustomPlace class.

  WPF and Silverlight Designer

In Visual Studio 2010, various designer improvements have been made to help create WPF or Silverlight applications.

Improved Support for Silverlight

In Visual Studio 2008, you could install the Silverlight Tools to create Silverlight applications in Visual Studio. However, the designer support for Silverlight projects was limited. In Visual Studio 2010, the designer support for Silverlight and WPF projects are now the same. For example, in Silverlight projects you can now select and position items with the mouse on the design surface.

Support for Multiple Platform Versions

In Visual Studio 2008, control design times were able to target only the latest WPF platform version. In Visual Studio 2010, this support is extended across multiple platforms, including design-time support for WPF 3.5, WPF 4, Silverlight 3, and future platform releases. As the same extensibility API exists for all these platforms, control design-time authors can easily write one experience and share it across the control runtimes for each platform.

Visual Databinding

The new data binding builder enables visual construction and editing of bindings without typing XAML.

Auto Layout

Layout improvements include a more intuitive Grid designer and better support for automatically sizing user controls.

Improved Property Editing

The Properties window now enables visually creating and editing Brush resources.

For more information, see WPF Designer.


외장하드 + 가상 ODD = iODD 하드웨어

대용량의 외장하드와 부팅 시 설치할 수 있는 usb Flash 드라이브를 알아보는 중
아주 유용한 제품을 발견했다. 바로 iODD 다.

일반적으로 usb 외장하드는 단지 하드디스크를 외장으로 연결해서 사용했지만
이 제품은 외장하드 + 가상ODD 을 한꺼번에 해결해 주는 유용한 것이다.

자세한 것은
http://www.i-odd.com
http://cafe.naver.com/iodd
을 가보면 자세한 도움을 얻을 수 있다.

참고로 보드나라의 iodd 커뮤니티에 iodd 관계자의
발언을 참고하면 좋을 듯 하다.
http://www.bodnara.co.kr/bbs/bbs.html?D=69&imode=view&num=108

안녕하세요. IODD 관계자 머피입니다. :)
제조사 관계자는 아니고, 유통사 관계자입니다만.. 일단은 이번 이벤트 직접 관계자인 관계로 몇 가지 끄적대 봅니다.
아마, 필드테스트 하시는 분들께서 읽게 되시면 아 그렇구나.. 대충 이런 반응을 보이실 것 같아서. :)
우선, IODD의 개발배경.
일반적으로 제품의 상품화 단계에서는 마케팅이라던가 기획부서가 시작을 하게 됩니다.
시장에서 이런저런 제품이 팔리고 있는데 우리도 그런 제품을 이런저런 가격대에 만들어서 내놓으면 이 정도가 팔리겠다 뭐 이런 내용이 되겠죠. 그렇게 해서 시장에 나온 제품은 경쟁사 제품들과 유사한 가격대, 유사한 기능, 그렇지만 뭔가 조금은 더 좋거나 조금 더 싸게 해서 경쟁력을 붙이곤 합니다.
그런데요, IODD는 저런 과정이 없었습니다. -_-;
IODD을 개발한 곳은 CNS라는 회사이고, 본래 ODD을 생산할 때 사용되는 전문 시험장비 등을 제조/납품하는 기업입니다. 이런 방면으로는 대단히 훌륭한 기술과 노하우를 가지고 있고, 또한 매우 견실한 회사이기도 합니다. 다만, 그 특성상 일반소비자를 직접 상대해 본 적이 없습니다. (그 때문에 유통사가 별도로 필요했던 것이고요. :D) 또한 제품개발 역시 일반 시중의 사용자들을 대상으로 해 본 적이 없지요.
IODD는 ODD의 사용이 잦은 CNS의 연구소 특성상, ODD을 갈아 끼우기가 너무 귀찮았던, 그렇다고 데몬 툴 류의 마운팅 툴을 쓰기도 대단히 성가셨던(아시다시피 연구소나 이런 데는 시스템에 엄한 소프트웨어를 잘 설치하지 않는데다가, 꼭 Windows 환경만 있으라는 법도 없으니까요) 한 연구원의 아이디어에서 출발했습니다.
중요한 건, 제품의 시작이 마케팅/기획 이런 곳이 아니라 연구소였다는 데에 있습니다. 마케팅/기획에서 출발하게 되면 필요한 기능이나 가격조건 등을 먼저 결정하고 그에 맞게 연구소에 요청을 하던 뭘 하던 하는데, 이 제품은 연구소에서 출발하였으니 연구소 측에서 '아 이건 이렇게 하는 게 좋겠다'라고 생각되는 건 전부 다 들어갔습니다. -_-; 그 결과,
1. LCD 창에는 OLED가 사용되었습니다. 일반 LCD보다 가격이 월등히 높다... -_-; 대신 얇고 밝고 선명하고 뭐 그렇습니다.
2. 7,200RPM HDD도 받아줍니다. 전력 부스트 회로인지 뭔지가 붙어서 7,200RPM HDD(스콜피오 블랙이라거나, 모멘터스 7200 계열)도 USB 포트 하나로 잘 붙습니다. USB 케이블이 길어도 오케이..
3. eSATA도 들어갔지요.
그리고, IODD을 여타 제품들과 완전히 차별화시키는 ODD 마운팅 기능은 별도의 소프트웨어가 아닌, 내부 칩셋에서 구현됩니다.
IODD에 탑재되어 있는 Oxford 칩셋은 일반적으로 사용되는 제네시스로직이나 Jmicron 칩셋에 비해서 훨씬 비쌉니다. 가격대가 높은 대신, 내부에는 ARM에 기반한 CPU가 통합되어 있으며, 이를 사용할 수 있는 펌웨어 구동을 위한 플래시롬 인터페이스가 탑재되어 있습니다. 이를 사용하여, 플래시롬에 ODD 마운팅 기능을 갖는 펌웨어를 얹고, 해당 기능을 칩셋 안의 CPU로 구동시켜서 마운팅 기능 자체를 IODD 자체 내에서 구현하게 된 겁니다.
덕택에, 데몬툴 류와 같은 가상 ODD일지라도, 시스템에서 IODD는 물리적인 ODD와 동일하게 인식됩니다.
....
이런 사정으로 인해 IODD의 제조원가는 일반적인 외장케이스에 비해 월등히 높습니다.
정확한 제조 코스트를 공개하는건 물론 불가능하겠습니다만.. :) 대략적으로 시중의 일반 2.5" 외장케이스에 비교할 경우 약 10배 이상이라고 보시면 거의 정확합니다. (케이스에 따라서는 20배일 수도 있겠군요. -_-;;)
IODD의 가격이 비싼 것은 제조사도, 유통사도 매우 잘 알고 있는 사실입니다....만, 이걸 어떻게 낮추기가 참 애매합니다.
위에 언급한 특징들은 이미 IODD의 특장점으로 알려져 버린 상태이기에, 가격을 낮추는 게 매우 힘들어졌습니다.
이를 해결하기 위해서 중국 제조사를 알아본 것이었습니다. 결과론적으로는 이게 상황을 더 악화시켰습니다만 -_-;;
원 제조사가 중국에서 생산해 본 적이 없었던 관계로 새로이 이거 저거 알아보고 하다 보니 시행착오를 겪고 있는 거라고 생각해 주시면 좋겠습니다.
좋은 의도에서 시도한 것인데도 불구하고 이런 결과가 나온 것에 대해서는 무척이나 아쉽고 또 아쉽습니다만, 지금의 상황에서는 최대한 빨리 정상화하겠다라는 말씀만 드릴 수 있겠네요.
케이스를 여닫기 힘들다는 이야기가 있습니다.
솔직히 말씀 드리면, 본래 이 제품은 공장에서 HDD을 탑재한 완제품으로만 판매할 생각으로 만든 것이었습니다.
이 역시 대상 소비자를 잘못 파악했기 때문이랄까요? IODD을 사용하고자 하는 계층은 완제품을 사서 대충 쓰는 소비자들이 아니라는 걸 고려했다면 좀 더 편한 방법을 택했을 테니까요. 그래서 여닫기가 참으로 힘듭니다. 
소비자에게 전화 와서 '너네도 열어보긴 한 거냐, 왜 이렇게 빡쎄냐'라고 하시면 참 할말이 없습니다.
저희도 처음에 IODD 받아서 열어보느라고 정말 헤맸거든요. :) 그렇다고 소비자한테 '우리도 헤맸어 요. T_T' 이럴 수도 없고 말이죠.
소비자들이 느끼는 아쉬움만큼이나, 유통사가 느끼는 아쉬움도 큽니다.
물론 소비자/유통사와 마찬가지로 제조사 역시 처음에 계획한대로 돌아가지 않는 상황에 대한 진한 아쉬움을 가지고 있습니다.
소비자들을 베타테스터로 생각하느냐라는 항의가 나오면 '우리는 베타도 아닌 거의 알파테스터가 된 기분이거등?' 하고 속으로 외칩니다.
대기업이 아닌 중소기업의 입장에서 많은 소비자들을 만족시키는 제품을 만든다는 건 참 어렵습니다. 기간도, 인력도, 자본도.. 모든 것이 부족하다 보니 본의 아니게 소비자들의 피드백을 받아서 제품을 개선해 가는 상황이 벌어졌습니다. 실은 exFAT이나 NTFS까지 적용하고 출시되었어야 했지만, 이 역시 빠듯한 스케줄로 인해서 결국 출시 후 적용의 형태가 되었고요.
개선은 꾸준히 되고 있습니다.
제조사의 의지도 굳건하고, 유통사 역시 소비자들만큼이나 헤매면서 방법을 찾아나가고 있습니다.
많은 분들의 도움으로, 더욱 완벽한 제품으로 거듭나리라 기대하고, 또 그렇게 될 것으로 믿고 있습니다.
도움을 주시는 많은 분들께 감사의 말씀을 드립니다.
고맙습니다.
덧.
보호필름은.. 저희도 속았습니다. -_-; 실기스가 난 게 아니라 보호필름이었다는 걸 좀 헤매고 나서야 알았지요.
물론, '난 보호필름 붙이고 쓸 테다. 보호필름에 난 기스도 없는 걸로 바꿔달라' 하는 난감하신 소비자 분이 계셔서 당혹스러웠습니다만.. =ㅁ=;
덧2.
기본 번들된 USB 케이블의 품질에 대해서는 저희도 좀 의구심을 가지고 있습니다. 그 USB 케이블이 초기불량인 경우도 적잖이 있었거든요. 혹시 자꾸 연결이 끊어진다거나 하는 일이 발생하면 케이블 교체를 우선 시도해 보시기를 권해드립니다.
덧3.
NTFS가 아닌 exFAT이 적용된 이유는 대단히 명확합니다.
NTFS보다 exFAT을 적용하는 게 훨씬 쉽습니다. -_-;;;;;;;;;;; 
NTFS는 그 이름에서 유추하실 수 있듯이 Windows NT에서 적용되기 시작한 것이며, Windows NT가 그렇듯이 NTFS 역시도 본래 서버를 대상으로 개발된 파일시스템입니다. 서버를 대상으로 하기에 라이선스 등이 대단히 복잡하며, 파일시스템의 신뢰도를 위한 다양한 안전장치로 인해 구현도 매우 어렵습니다. NTFS을 구현하려면 CPU도, 플래시롬 용량도 지금보다는 많이 강해지고 커져야 할지도 모릅니다. exFAT으로 인해서 종전의 치명적 약점이던 4GB 파일크기 제약이 사라진 이상 NTFS의 필요성은 상당부분 감소한 것이 사실인지라 NTFS가 언제 적용될 것이다라고 말씀 드리기는 매우 어렵게 되었네요.


관리자가 표준 사용자로 수행되는 경우 C++

Windows Vista,7 은  OS의 보안강화를 위해서 UAC(User Access Control) 을 적용하고 있다.

  1. 대부분 사용자가 관리자 계정을 사용해서 로그온 한다.
  2. 관리자만큼 높은 권한을 가진 사용자가 로그인하면 계정의 권한 수준에 부합하는 보안토큰을 만들고
    추가적으로 표준사용자(Standard User)권한을 가진 필터 된 보안토큰을 생성한다
  3. 필터 된 토큰은 사용자가 새로운 프로세스를 생성할 때 마다 시스템에 의해서 전달된다.
  4. ‘권한이 제한된 프로세스는 높은 수준의 권한이 필요로 하는 보호된 리소스(secured resoure) 에는 접근할 수 없다’
  5. 제한된 리소스에 접근하기 위해서는 운영체제에게 권한 상승을 요구할 수 있다. 이러한 권한 상승은 프로세스 단위로 이루어진다.
  6. 새로운 프로세스가 생성되면 로그온 한 사용자의 필터 된 토큰이 해당 프로세스와 연계된다.
    만약 프로세스에 더 많은 권한을 부여하고 싶다면 운영체제에게 사용자의 승인을 얻어달라고 요청해야 한다.
  7. 관리자로 로그인 한 경우 승인 다이얼로그 박스가 보안 윈도우 데스크톱에 나타납니다.
    • 시스템에서 제공하는 어플리케이션에서 요구한 경우 : 파란색 배너를 가진 보안 확인 다이얼로그
    • 서명된(signed) 어플리케이션에서 요구한 경우 : 회색 배너를 가진 보안 확인 다이얼로그
    • 서명조차 되어 있지 않은 어플리케이션에서 요구한 경우 : 주황색 배너를 가진 보안 확인 다이얼로그
  8. 표준 사용자로 로그인 한 경우 다른 형태의 다이얼로그 박스가 떠서 사용자에게 권한 상승을 위한 사용자 계정 정보를 입력할 것을 요청하게 된다.
    관리자가 표준 사용자를 대신하여 로그온 정보를 입력하는 방식(Over the shoulder logon) 이라고 한다.
  9. 링크나 버튼에 방패 모양의 아이콘들을 가지고 있는 데, 이러한 인터페이스는
    해당 기능을 실행하면 권한 상승을 위한 확인 창이 뜰 것이라는 것을 미리 알 수 있도록 해 준다.

Eclipse 에 Flex Builder Plugin 을 설치했을 경우 Navigator Filters 설정... Flex 개발

Flex Builder Standard alone 을 설치하지 않고 plugin 을 설치했을 경우 Navigator Filters 에
필터링 되어야 하는 파일들의 확장자가 추가되어 있지 않는 문제가 있습니다.
기본적으로 .java 와 .class 만 추가되어 있습니다.
편하게 추가하는 방법이 있으면 좋겠지만 일단 수동으로 추가해야 합니다.

일단 기본값으로 설치했다면 아래와 같은 위치에 해당 파일이 있을 것이다.
windows x86
C:\Program Files\Adobe\Flex Builder 3 Plug-in\eclipse\plugins\com.adobe.flexbuilder.ui_3.0.214193
windows x64
C:\Program Files (x86)\Adobe\Flex Builder 3 Plug-in\eclipse\plugins\com.adobe.flexbuilder.ui_3.0.214193

이 폴더 아래에 보면 plugin.xml 파일이 있는데 편집기로 열고

<extension
point="org.eclipse.ui.ide.resourceFilters">
<filter
pattern=".flexProperties"
selected="true"/>
<filter
pattern=".actionScriptProperties"
selected="true"/>
<filter
pattern=".project"
selected="true"/>
<filter
pattern=".settings"
selected="true"/>
<filter
pattern=".flexLibProperties"
selected="true"/>
<filter
pattern=".DS_Store"
selected="true"/>
<filter
pattern=".svn"
selected="true"/>
</extension>




추가하고 저장합니다. 그리고 eclips을  -clean 파라메터와 함께 시작하면 아래와 같이 필터링 된 결과를 볼 수 있습니다.





결과적으로 Eclipse 의 Flex Navigator 에 필터링된 파일만 볼 수 있습니다.


Visual Assist 10.5 C++

요즘은 거의 Visual Studio 2008 을 사용할 일이 없어 관심을 가지고 있지 않다가 최근에 사용할 일이 있어서 이전에 구입한 라이센스를 연장했다.
http://www.visualassist.com/
http://www.visualassist.com/purchase/default.asp

Maintenance Renewal 가격이 $49 인데 … 좀 부담되긴 했다.

거의 이전에는 IntelliSense 용도로만 사용했지만 이클립스를 사용한 이후로는
Member List (Alt + M),
Source 선언,구현 전환(Alt + O) 
을 많이 사용한다.

이클립스에서는 Type 리스트와 Member 리스트 보기가 정말 쉬었다.
Type리스트는 Ctrl + Shift + T,
Member리스트는 Ctrl + O 인데…
Visual Studio 에서는 그런 기능이 전무하다.
하지만 Visual Assist 에서는 Member 리스트를 보여주는 단축키가 있어서 그나마 다행이다.

일단

  1. Type리스트를 보여주는 단축키도 포함되어야 하고
  2. 강력한 Refactoring 기능(Visual Assist 에도 포함되어 있긴 한데… 아직 어설프다
  3. 자동으로 클래스를 사용한 변수를 추가할 때 #include 가 추가되어야 하는 기능: 사실 C++ 에서는 구현하기 까다로울 것이다.
    헤더파일과 구현파일일 경우가 다르고 헤더파일은 포인터일 경우에 포함하지 않고 전방위 선언만 되어야 하고 네임스페이스가 다른 경우에도 고려되어야 한다.
    헤더와 구현부가 분리되어 있어서 더 까다로울 것이다.

현재 Visual Assist 에 있는 사용할 만한 기능은 다음과 같다.

  1. Rename : 리팩토링 기능의 기본인데 그나마 쓸만하다.
  2. Extract Method : 구현의 일부분을 메소드로 뽑아 낼 때 유용하게 사용할 수 있다.
  3. Encapsulate Field : public 으로 선언된 필드를 속성 비스무리하게(C++에서는 속성을 지원하지 않는다.) get,set 함수로 만들어 준다.
  4. Change Signature : 메소드 Signature 을 바꿀 때 선언부,구현부 한꺼번에 변경할 수 있다.
  5. Move Implementation to Source File : 헤더파일에 되어 있는 구현부를 소스파일로 이동시켜준다.
  6. Add Member : 멤버변수,함수 추가할 때
  7. Add Similar Member : 중복함수를 추가할 때 변하게
  8. Document Method : 문서화 작업을 편리하게
  9. Create Declaration : 구현한 후에 선언해야 할 경우
  10. Create Implementation : 선언한 후에 구현해야 할 경우

1 2 3 4 5 6 7 8 9 10 다음