VHD

카테고리 없음 2014. 4. 2. 12:37 |

 예전 윈7 사용할 때는 사용하지 않았다. 정확히 이유는 잘 기억 안나지만 버전이 지원 안되는 버전이 아니여서인가 싶다.

 이번에 윈8.1 새로 구매했으니 이번에는 VHD를 제대로 사용해보려고 한다.


개념

VHD라고 써놓으면 뭔가 거창하게 보이는데 virtual hard disk (가상 하드 디스크) 다. 줄여서 뭔가 대단해 보였다. 나만 그랬을수도 있지만.

이 가상하드 기술은 개념적으로만 따지면 vmware같은 가상머신에서 생성하는 그놈이랑 비슷비슷하다. 

일반 하드처럼 데이터 넣고 빼기도 맘대로. 부팅도 가능하다.

다만 특정 가상머신에 종속된게 아니라 윈도에서 거의 네이티브 수준으로 인식한다는게 아주 좋다.


자식 디스크

VHD만의 특성이라고 한다면 이 자식 디스크가 아닐까 싶다. vmware player에서는 이런 기능 아직 못봤다.


내 식대로 설명한다면 자식 디스크는 도화지 위에 놓은 투명종이 같은거다. 

도화지에 나무를 그린 다음에 투명종이를 올리면 투명종이에도 나무가 비친다. 거기에 과일이랑 새, 둥지를 그려놓을 수 있다. 그러다가 다른게 그리고 싶어지면 투명종이만 바꾸면 된다. 마음껏 투명종이에 그려도 도화지에 그려진 나무가 덧그려질 일은 없을거다.

물론 실제로 간다면 압력이나 도구의 종류 등으로 인해서 영향 받을수도 있지만 개념 설명하는 셈이니 패스


막 더럽게 하드디스크 쓰다가 정리하고 싶을때가 있다. 기존 방식으로 그냥 하드디스크에 설치한 상태라면 답이 없다. 그냥 포맷해야 된다.

근데 가상하드 쓰면 아주 쉽다. 자식 디스크만 없애면 된다.


주의점

VHD에도 단점이면서 주의할 점이 있긴 하다. 뭐, 내가 보기에는 그냥 신경써야 될 특성이긴 하다만.


일단 용량. fixed와 flexible이 있는데 고정이랑 가변이다.

만들때 고정 20G하면 처음부터 20G 먹고 시작한다

가변 20G 하면 사용하는 양만큼만 먹고 (딱 떨어지지는 않을수도 있다) 많이 쓸수록 커진다. 물론 20G로 설정했으니 그 이상은 안된다


가상 하드를 하나 만들때는 문제가 없는데 자식 디스크 만들 때는 문제가 된다.

일단 자식 하드는 크기 변경이 안된다. (도화지 크기 이상으로 투명종이를 사용할 수 없다)

그리고 부모의 용량 방식이 고정이면 엄청난 용량 크리티컬을 먹는다


1) 구성 : 부모 하드 - 자식 하드1 - 자식 하드2

부모 하드 : 고정 20G, 실사용 10G

자식 하드 1 : 실사용 5G

자식 하드 2 : 실사용 3G

일 경우 가상하드 크기

20G + 20G + 20G = 60G


2) 구성은 위와 동일

실사용 똑같고 부모 하드가 가변 20G이라면

10G + 5G + 3G = 18G


그렇다. 고정하면 자식의 수만큼 배로 용량이 증가한다

가변으로 하면 지 쓰는만큼 먹는다


자식을 많이 만들려면 가변 형식으로 만들어야 된다.


가변이여도 부팅시 부팅하는 디스크는 원래 크기만큼 확장된다.


그리고 크기는 나중을 고려하여 적당하게 잡는게 좋다. 크기를 늘리는건 그렇게까지 쉽지는 않다. (어렵지도 않긴 하다만)

줄이는건 거의 불가능하다고 보면 되고, 그냥 새로 만드는게 나을수도 있다. 아니면 웹을 뒤져서 방법을 찾든지. 


부팅시에 속도 저하가 있다 (가변의 경우)

hdd 사용시는 이를 감안하는게 좋다. 아니면 ssd 써도 되고


활용방안

좀 복잡하게 트리를 만들려고 했는데 이런저런 이유로 간략화시켰다.



--ssd--

윈도우 (백업본 따로 만들기)

디아3 설치용


--HDD--

임시파일 처리용

개발툴 설치용

프로그램 설치용

스팀 게임 설치용

일반 게임 설치용


--HDD2--
얜 그냥 데이터 저장용





참고 블로그

http://cappleblog.co.kr/237

(찾아본 것 중에서는) 자료가 제일 상세하게 정리되어 있다. 








Posted by Vermond
:

공식 페이지 : https://github.com/core-plot/

사용 방법 : https://code.google.com/p/core-plot/wiki/UsingCorePlotInApplications


Xocde5, CorePlot1.6 기준


준비 단계


1. 코어 플롯 데이터를 다운로드 받는다


2. 코어 플롯을 삽입할 프로젝트에 CorePlot-CocoaTouch.xcodeproj를 추가한다

만약 추가할 프로젝트가 다른데서 열려있으면 제대로 추가되지 않는다


3. 본래의 프로젝트 설정을 바꿔야 한다

Linking - Other Linker Flags 에서 옵션 두개를 추가한다

-ObjC

-all_load


Search Paths - User Header Search Paths 항목에 코어플롯 헤더 위치를 추가해야 된다

다운로드 폴더에 받았다고 가정할때 다음의 주소를 등록하면 문제없다

옵션 중에서 non-recursive를 꼭 recursive로 바꾸도록 한다

/Users/(계정명)/Downloads/core-plot-master/framework 

당연한 이야기이지만 경로를 변경할때는 이 항목 역시 변경해야 한다


Build Phases - Target Dependencies에 CorePlot-CocoaTouch 항목 추가한다

제대로 프로젝트가 추가되었다면 아래와 비슷한 화면이 뜬다




Build Phases - Link Binary With Libraries에 항목 2개를 추가한다

QuartzCore.framework

libCorePlot-CocoaTouch.a

두번째 항목은 이전 항목처럼 프로젝트가 제대로 추가되었다면 쉽게 확인할 수 있다


4. 헤더에 다음 문구를 추가하면 사용할 준비는 완료된 것이다

#import "CorePlot-CocoaTouch.h"



코딩


헤더 선언

@interface CMViewController : UIViewController <CPTPlotDataSource>


@property (strong, nonatomic) CPTXYGraph *graph;

@property (strong, nonatomic) NSMutableArray *dataForPlot;


@property (strong, nonatomic) IBOutlet CPTGraphHostingView *graphView;


@end


CPTPlotDataSource 추가 

그래프, 그래프를 보여줄 뷰, 데이터 배열을 준비한다

GraphHostingView는 UIView를 만들어서 사용하면 된다 (종류는 바꿔줘야 한다)


본문 작성

몇가지 작성해야 하는건 분명한데 아직 파악을 제대로 못했다

웹에 떠도는 예제를 참조하거나 프로젝트 내부의 예제를 보고 파악하도록 한다

내가 작성한 예제는 아래에 첨부한다

CorePlotExample.zip



Posted by Vermond
:

참고 링크 : http://www.codeproject.com/Articles/22717/Using-PropertyGrid

(프로젝트 실행에 유의할 것 - 경로 재설정 필요)


VS의 폼 편집창에서 볼 수 있는 속성 윈도우

VS에서는 Property Grid라는 이름으로 지원한다.


실제 지원하는 부분은 아이콘부터 설명부분까지이고 아이템 선택하는 컨트롤은 다른 영역이다



이 PropertyGrid는 폼 편집창보다 코드상에서 처리를 좀 해주어야 한다.



- 기본 연결

PropertyGrid는 하나의 클래스와 연결할 수 있다

연결하는 클래스는 뭐든지 상관없지만 get/set으로 입출력을 선언해주어야 이 propertyGrid에 출력된다


연결 자체는 간단하다

propertyGrid1.SelectedObject = (created class);



- 구성 및 설정

get/set 선언에 일부 설정을 추가하면 위 스샷과 같이 나오게 된다


 [DisplayName("Choose your variant")]

        [Description("You can choose between Stone, scissors, paper")]

        [Category("Choosing")]

        [Editor(typeof(GameEditor), typeof(UITypeEditor))]

        public GameValues DisplayGameValues

        {

            get 

            {

                return m_GameValues;

            }

            set

            {

                m_GameValues = value;

            }

        }


DisplayName

메인으로 출력될 이름을 정한다. (스샷 기준으로 Text)

리스트란에 출력되고 설명 헤더로 추가된다

없을 경우에 선언한 함수명이 출력된다


Description

아래에 출력되는 설명을 정한다

없을 경우에는 공란이다


Category

목록에서 포함시킬 카테고리를 설정한다

미등록시 기타로 등록된다



기타 내용은 예제를 참고하면 좋다 (5번째 예제를 참고했다)

'Programming > C#' 카테고리의 다른 글

C DLL과 C# 연결 방법  (0) 2013.12.24
C# GC 빈도 낮추기  (0) 2013.12.20
c# - c dll 디버깅시 주의할 점  (0) 2013.12.20
c# 문자열에서 문자 개수 알아내기  (0) 2013.12.19
C# 타이머 사용 예제  (0) 2013.12.10
Posted by Vermond
: