Visual Studio Code는 거의 모든 주류 개발 언어의 구문 강조 표시, 코드 자동완성, 사용자 지정 바로 가기 키, 대괄호 일치 및 색상 구분, 코드 조각 프롬프트, 코드 비교와 같은 기능을 지원하는 무료 오픈 소스 최신 경량형 코드 컴파일러입니다. Git에 대한 기본 지원 그리고 동시에 풍부한 플러그인을 통해 플러그인 확장을 지원하여 사용자는보다 효율적인 기능을 사용할 수 있습니다. Visual Studio Code 개요 먼저 Visual Studio Code의 강력한 기능을 살펴 보겠습니다. 크로스 플랫폼 Microsoft는 항상 강력한 개발 도구로 알려져 왔으며 Visual Studio IDE는 "우주 최고의 IDE"로 많은 사람들에게 알려져 있습니다. 불행히도 Visual Studio ..
아래는 스크롤뷰의 컨텐츠를 프로그램에서 추가 삭제 할때 레이아웃이 망가지지 않게 하는 방법에 대해서 알아본다.모든 화면구성 할때 가장 기본이 되는 뷰가 아닌가 싶다.각 뷰에 어떤 Constrain을 추가하는지 순서대로 따라한다.먼저 View의 구조에 대해서 보면 1. Main view 2. Scroll view 3. Content view 4. Stack view1. Main view 최상의 뷰에는 벼로 설정 할 것이 없음으로 그냥 건너뛴다. 다만 취 상위뷰에 Scroll view 하나를 추가한다.2. Scroll view Scroll view 는 상,하,좌,우 constrain을 슈퍼뷰와 연관을 가지도록 추가 한다..3. Content view Content view 의 상,하,좌,우 constrain..
IOS 에서 스레드를 사용 하기 위해서 병렬 혹은 직렬 큐를 생성하여 사용 할 수 있다.디스패치-그룹을 사용 하는 방법 1. 병렬큐 생성 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 2. 직렬큐 생성 dispatch_queue_t dispatch_queue_create(const char *label, dispatch_queue_attr_t attr); macOS 10.7 이후버전과 IOS 4.3에서는 attr를 반드시 명시적으로 DISPATCH_QUEUE_SERIAL혹은 (NULL)로 명시 하여야 한다. 만약 비동기 큐를 만들려면 DISPATCH_QUEUE_CONCURRENT으로 입력 해야 ..
블록체인에서 시그니쳐(서명)는 아주 중요한 두가지 인증을 하게 된다.1. 지갑 주인만이 지갑에서 돈을 사용할 수 있게 한다. 2. 지갑 주인이 아닌 다른 사람이 주인이 발행한 transaction에 대해서 데이터 수정 하는 것을 막아준다.Private(개인)키는 데이터에 사인을 추가하는 작업이고, Public(공용)키는 데이터를 검증 하는데 사용을 한다.예:) 철수가 2개의 코인을 영철이 한테 보내려고 한다. 철수는 소프트웨어 지갑에서 이에 관련된 (장부)transaction을 작성하여 블록체인 네트워크에 등록하며, 광부들은 이 장부를 검증하여 블록체인 의 다음 불록에 추가하는 작업을 하게 된다. 그런대 이때 광부A 가 데이터를 변경하려고 시도한다. 즉 장부에 있는 수신자를 자신으로 바꾸려고 하는것이다...
1. UIView(xib)파일 만들기먼저 xib 파일을 하나 만든다. Attributes inspector 에서 Simulated Metrics - Size 를 Inferred 에서 Freeform 으로 바꾼다. 그리고 Size inspetor 에서 Width와 Height를 A4용지의 크기에 맞게 조절을 한다. UIView를 상속받는 클래스를 생성하고 위에서 만든 xib파일의 File's Owner과 연결한다. 2. UIView를 PDF 로 저장위에서 만든 UIView오브젝트를 로드하기 위해서는 아래와 같이 먼저 uiView오브젝트를 생성하여야 된다. UIView *rootView = [[[NSBundle mainBundle] loadNibNamed:@"SampleUIView" owner:self op..
Getter & Setter 를 사용하여 멤버변수 생성하기@interface Employee : NSObject { int employeeNumber; NSString *name; } - (void) setName : (NSString *) newName; - (NSString *) name; @endAccessor 를 사용하여 멤버변수 생성하기@interface Employee : NSObject { int employeeNumber; NSString *name; } @property (nonatomic, assign) int employeeNumber; @property (nonatomic, retain) NSString *name; @end @implementation Employee @synthe..
요즘들어 안드로이드를 이용하여 하드웨어와 통신하는 사례가 부쩍 늘고 있다. 예를 들어 릴레이 도오락을 열거나, 문서를 프린트하거나 등... 하지만 인터넷에서 찾아볼수 있는 자료는 거의 대부분 쓰잘데기 없는 것들이여서 나름대로 여기에 정리 해 본다.시리얼 통신의 개념은 아주 간단하다, 즉 (bit) 비트단위로 데이터를 발송하거나 전송하는 방식을 말한다. 비록 (byte) 바이트 단위로 통신하는 병열통신 보다는 느리지만 시리얼 통신은 한가닥의 선으로 데이터를 전송하는 동시에 다른 한가닥의 선으로는 데이터를 받을 수 있다. 이런 장점 때문에 구현이 간단 할 뿐만 아니라 통신거리도 비교적 길다.Widnows, Linux, 혹은 Android 운영체제든 시리얼통신의 프로그래밍 순서는 아래와 같다.1. 시리얼포트를..
클래스 오브젝트 초기화오브젝트를 생성하기 위해서 메모리할당(alloc) 과 초기화(init)라는 두 단계를 거쳐야 한다.메모리할당: 오브젝트가 사용할 메모리를 힙에서 할당 받는다.초기화: 오브젝트에 필요한 초기 값을 채워준 다음 그 메모리 주소에 대한 포인터를 반환한다. Foo* myFoo = [[Foo alloc] init]; 메모리 할당(Alloc):NSObject 클레스에서 상속받은 클래스메소드 alloc으로 한다. 아래는 동작 방식:1. alloc은 새로운 오브젝트를 위한 메모리를 할당하고 그 주소를 가리키는 포인터를 반환.2. 컴파일러는 모든 오브젝트 인스턴스에 대해 isa라는 이름의 인스턴스 변수를 자동생성하고 alloc은 이 변수의 내용을 채운다. isa는 오브젝트의 클래스 구조에 대한 포인..
@property : accessor 메소드를 선언하는 간편한 방법 제공@synthesize : 컴파일러가 지정된 accessor 메소드를 자동으로 작성하게 만든다. 프로퍼티 이름과 그 프로퍼티를 나타내는 인스턴스 변수 이름을 달리하기. @synthesize propertyName = instance variableName;@dynamic : accessor를 직접 작성할 것임을 컴파일러에 알리기 위하여 사용, 즉 getter 와 setter가 구현되어 있지 않아도 상위 클래스 어딘가에서 선언되어 있다고 미리 알려주기 때문에 컴파일 할 때 오류가 발생하지 않는다. 주로 setter 에 입력값을 제한하는 로직이 들어있을때, 이것을 사용한다.프로퍼티속성에는 3가지가 있다.1. getter 와 setter의 ..
안드로이드에서 각 스레드간 통신하는 방법을 알아 보도록 하자.안드로이드 에서 하나의 스레드가 시작되면 이 스레드는 Message Queue, Looper, Handler 를 각각 하나씩 가지고 있는다.Message Queue 란?외부 스레드로 부터 핸들러를 통하여 받은 Message 혹은 Task(Runnable 인터페이스를 구현한 오브젝트)를 저장하는 역할을 한다.그럼 Message란? 메세지란 임이의 Object 데이터와 설명을 포함한 메세지를 정의한 하나의 오브젝트이다. 메세지 오브젝트를 생성하기 위해서는 Message 클래스의 Public 생성자를 사용 할 수 있지만 가장 좋은 방법은 Message.obtain()혹은 Handler.obtainMessage() 정적 함수를 호출하여 오브젝트를 얻는..