2018년 4월 26일 목요일

bootcamp 지우기

맥북 프로 레티나 터치바

diskutility 에서

bootcamp 파티션 삭제하면 검은색에서 회색으로 바뀐다(APFS로 지정)

파틴션 아이콘 클릭하여 - 버튼을 이용하여 삭제하면 끝.


2018년 4월 24일 화요일

linux.co.kr

     IP : 인터넷 프로토콜은 신뢰성이 없는 비연결형 데이터그램 프로토콜로 오류검사나 추적을 제공하지 않는다. IPTCP에서 잘려진 데이터그램이라는 패킷 형태로 데이터를 전송한다데이터그램은 서로 다른 경로로 전달될 수 있으므로 순서대로 도착하지 않거나 중복되어 도착할 수 있다경로는 기록되지 않고 목적지에 도착한 데이터그램을 재전송하는 기능이 제공되지 않는다. IP는 사용자가 기능을 자유롭게 추가할 수 있는 전송기능을 제공해 최대한의 효율성을 제공한다.
     2. ARP(Address Resolution Protocol) : 논리주소인 IP주소를 물리적인 주소로 변환해준다. LAN과 같은 물리적 네트워크에서 패킷을 전달하려면 수신자의 MAC과 같은 물리 주소를 알아야 하는데 해당하는 IP주소를 브로드캐스트하여 물리주소를 요청한다.
     3. RARP(Reverse Address Resolution Protocol) : ARP의 역과정으로 호스트의 물리주소만을 알고 있을 때 인터넷 주소를 알아내는데 사용한다. (Ex:네트워크상의 프린터)
     4. ICMP(Internet Control Message Protocol) : 송신자에게 제어 및 오류 정보 전송을 위한 메시지를 보낸다.
     5. IGMP(Internet Group Message Protocol) : 그룹 멤버쉽을 관리하는 프로토콜로 멀티캐스트 라우터의 멤버 리스트 생성과 갱신을 돕는다.


Connection - oriented 통신
TCP는 연결-지향 프로토콜로 A 지역의 프로세스가 B 지역의 프로세스와 데이터를 주고 받을 때 A TCP B TCP에게 알려 B의 승인을 얻고 A TCP B TCP가 가상의 연결을 이루어 양방향으로 데이터를 교환한다
-       전화 전송 방식(Peer to Peer 통신)
-       Data Stream 전송
-       Flow Control, Error Control을 통해 안전,신뢰 제공,
-       두 지점간 데이터 전송이 끝나면 연결은 끊어진다.
-       TCP 통신

Connection – less 통신
IP(UDP, ICMP)는 비연결형으로 UDP에 의해 보내지는 데이터그램은 서로 독립적이고 발신지에서 동일한 목적지로 전송되더라도 서로 다른 데이터그램들 사이에는 아무런 연관 관계가 없다
-       편지 전송방식
-       Datagram 전송
-       연결 설정 및 연결 종료의 과정이 발생하지 않음
-      Flow Control, Error Control 제공하지 않음
-      UDP, ICMP 통신



TCP
UDP
SMTP, FTP, HTTP
DNS,SNMP,BOOTP
Connection Oriented- Host간의 세션 성립 됨
: Host간의 Data 전송 전 연결을 확립
Connectionless- Host 사이의 세션 성립 안됨
: Host간의 Data 전송 전 연결을 확립하지 않는다
신뢰할 수 있는 데이터 전송보장
- ACKs와 재전송
신뢰성보장 안함
단순한 요청-응답 통신
흐름제어오류제어 함 - 데이터 전송 느림
흐림제어 오류제어 안함 - 데이터 전송 빠름
20Byte Header
8 Byte Header Small Header
각각의 Host가 연결을 설정해야 하므로 브로드캐스트멀티캐스트 안됨
브로드캐스트 및 멀티캐스트 됨



OSI 7                           TCP/IP
Application Layer
Presentation Layer.     Application Layer (TCP/IP네트워크 데몬과 응용 프로그램이 OSI의 일부계층과 세션계층의 일부업무를 수행)
Session Layer           
Transport Layer    Transport Layer (세션의 초기화에러제어순서검사를 포함한 데이터 경로와 전달을 관리)
                
Network Layer     Network Layer(Internet) (데이터의 주소 전송패킷의 분할과 복구)
Datalink Layer
Physical Layer     Data link Layer (Network Access) (이더넷과 FDDI등의 전송매체의 접근방법을 포함해네트워크사이의 데이터 전송의 순서를 기술)

IP카메라란 무엇인가요?
 글쓴이 : 최고관리자
 조회 : 9,153  
IP카메라란 무엇인가요?


안산시 통합관제센터 담당자들이 관내에 설치한 IP감시카메라의 영상을 멀티비전을 통해 한 눈에 살펴보고 있다.
지난해 인기를 끌었던 TV드라마 ‘아이리스’에는 국가안전국(NSS) 요원이 감시카메라에 찍힌 범인의 모습을 찾아내는 장면이 자주 등장했습니다.
드라마 속 NSS 요원은 아주 멀리 떨어진 지역에 설치한 감시카메라가 찍은 영상을 중앙 관제실에서 손쉽게 확인합니다.
이 드라마뿐만 아니라 첩보물에는 감시카메라로 촬영한 영상을 모니터링하는 장면이 곧잘 나옵니다.
하지만 현재 가장 많이 쓰는 아날로그 폐쇄회로TV(CCTV)로는 부산에서 찍은 감시 영상을 서울 중앙관제실에서 실시간으로 확인하기는 쉽지 않습니다.
최근 상용화하기 시작한 IP감시카메라(이하 IP카메라)를 활용하게 되면 드라마 속 장면을 현실에서도 재현 가능합니다.
영상보안산업에 새롭게 등장해 산업의 축을 바꾸고 있는 IP카메라에 대해 알아봅니다.

Q:IP카메라란 무엇인가요?
A:IP카메라는 TCP·IP(Transmission control protocol·Internet Protocol)를 활용해 카메라가 촬영한 감시 영상을 저장하고 전송하는 네트워크 감시카메라의 한 종류입니다. 네트워크 구축에 사용된 TCP·IP를 이용하기 때문에 IP카메라라고 불립니다. TCP·IP는 인터넷에 연결된 컴퓨터들 사이에 데이터를 주고받기 위해 사용하는 통신규약으로 인터넷을 가능하게 하는 핵심 요소입니다. IP카메라는 촬영한 영상 데이터를 인터넷상의 데이터와 마찬가지로 TCP·IP 네트워크를 통해 전달합니다. 때문에 인터넷이 연결된 곳은 어디든 영상을 주고 받을 수 있습니다. 드라마에 나오는 것처럼 멀리 떨어진 지역에서 찍은 영상도 인터넷만 사용한다면 곧바로 확인이 가능합니다. 국내에서는 올해 은평구청이 최초로 ‘u도시통합센터’ 프로젝트를 수립해, 그 일환으로 관내의 감시카메라를 IP카메라로 교체하고 통합관제할 수 있는 시스템을 갖췄습니다.

Q:기존 감시카메라와 어떤 차이점이 있나요?
A:우리는 흔히 감시카메라를 CCTV라고 부릅니다.
CCTV는 폐쇄회로텔레비전시스템(Closed Circuit Television)의 약자로 말 그대로 폐쇄된 환경에서 쓰는 감시카메라입니다.
IP카메라와 달리 동축케이블을 장착해 영상을 전송하는 방식으로 네트워크 기능이 없는 게 특징입니다.
CCTV는 아날로그 감시카메라로 분류하기도 하는데, 카메라가 아날로그 방식이기 때문입니다.
아날로그 신호로 촬영한 감시 영상을 디지털방식으로 전환해야만 저장과 전송이 가능합니다.
아날로그 카메라인 탓에 100만 화소 이상의 고화질 영상을 얻기 힘들다는 단점이 있습니다.
반면 IP카메라는 휴대형 디지털카메라처럼 디지털 방식이기 때문에 고화질 영상 촬영이 가능합니다.
IP카메라가 영상보안시장의 새로운 축으로 떠오른 또 다른 이유가 바로 고화질 영상 구현에 있습니다.
감시카메라는 시민의 안전이나 교통안전 등 방범을 위해 설치하기 때문에 실물에 가까운 선명한 화질이 중요합니다.
고화질 IP카메라가 속속 개발됨에 따라 보다 선명한 화질의 영상감시가 가능해졌습니다.
Q:IP카메라의 단점은 없나요?
A:IP카메라는 TCP·IP를 이용해서 네트워크 기능을 확보했지만 모순되게도 TCP·IP의 고유한 특징 때문에 영상이 끊어지는 지체 현상이나 화질 저하 현상이 나타납니다.
TCP·IP는 광범위한 공간을 물리적 제약을 뛰어넘어 연결하기 위해 고안한 네트워크 방식으로 대용량 데이터를 끊김없이 신속하게 전송하는 데는 부적합합니다.
관련 업계에선 영상 전송 과정에서의 지체 현상을 해결하기 위해 영상 압축코덱을 활용해 영상데이터 크기를 줄이는 방식을 채택했습니다.
하지만 영상을 압축하다 보니 화질이 떨어지는 새로운 문제점을 낳았습니다.
따라서 전문가들은 영상 지체 및 화질 저하 현상을 극복해야만 고화질 IP카메라 대중화 시대가 열릴 것으로 내다보고 있습니다.

전자신문  이경원기자 won@etnews.co.kr

SaaS(Software as a Service)는 하나 이상의 공급업체가 원격지에서 보유, 제공, 관리하는 SW 서비스를 뜻하며 공급업체는 하나의 플랫폼을 이용해 다수의 고객에게 SW서비스를 제공, 사용자는 이용한 만큼 돈을 지불하거나 월, 년 단위의 이용료를 낼 수도 있다. 기존의 ASP를 확장한 개념으로 차세대ASP로 볼 수 있다.

from 전자신문


애플 엔터프라이즈 계정에 대해 몇가지.


웹 즐겨찾기는 자주 바뀌는거라... 신경 안쓰셔도됨.(자르기 귀찮아서)

우선 회사 계정이다. 하나는 지금 다니는 회사. 해당 내용으로 블로깅 한 적이 있다.


하나는 기아껀데

기아는 멤버로 등록해줘서 쓰던거고
회사껀 내가 등록했다.

귀찮은게 관련해서 법적 책임을 진다는 확인을 해줘야 한다. 대표 직통 번호 - 보통 휴대전화 - 도 제공해야 한다. 아무래도 앱을 스토어에 말고도 올릴 수 있는 권한이니... 이래놓고 개발자들과 공유를 하기 때문에 사실 좀 찜찜한 구석이 있다. 다음 갱신할 때는 다른 사람에게 위임하는 법을 알아야 하겠는데... 이번에 갱신할 때는 딱히 그런 메뉴가 없었다 ㅠ 내가 볼 때 한번 정해지면 유선상(전화로) 바꾸는 방법 뿐 없을 것 같다.



선택하면 지우는게 아니라 남겨두는 것이니 주의!





개발자 디바이스 리셋은 1년에 한번 밖에 못한다. 100대가 많을 것 같지만... 금방 찬다 ^^;



다 지우면



요래 된다.


등록된 디바이스에서는 바로 실행이 가능하다.

등록된 디바이스가 아닌데도 설치할 수 있는게 엔터프라이즈 계정!









github으로 이슈 관리하면 편리한 점

레드마인도 괜찮긴한데 깃헙이 더 편리한 이유는 소스 코드로 바로 갈 수 있기 때문.

그러나 SVN에 비해 느리고,

대용량은 git lfs를 이용. 그리고 소스트리나 깃헙용 GUI 툴보다의 버그들 때문에
결국은 command 만 이용하게 된다는 점을 고려했을 때

유일하게 편리한 점은 웹이라 어디서든 접속 가능한데 있을 것이다.




재택 근무의 문화가 어서 열리길 바란다.

요즘 감기는 약 안 먹으면 안 낫는다.

그래서 집에 감기약 많이 사뒀지만

많이 아파야 약을 먹게 된다.

결국엔 많이 아플 수 밖에 없다.

허리도 마찬가지.

난 손목이나 허리 누가 미리 말을 해줬다면 신경을 썼을텐데

말 안해주었었다.

신기한건 내가 아쉬워서 말을 해주면

안 듣는다.

결국 아파봐야 그 때 후회하며 알게 되는 것 같다.

그래서 이제는

뭔가를 가르쳐 줄 때

미리 포기하는 습관이 생겼다.

조금 말해보고 아니다 싶으면 그냥 경험하게 하는게 좋은 것 같다.

안타깝지만 그것도 자기 능력이라 판단된다.


사람은 변하지 않더라.

20년 경험이다. 중학교 때부터 치면, 더 넘었네.

그래서 이젠 내려놓는다.



2018년 4월 23일 월요일

브런치를 다시 시작한 이유

사실 내 눈으로 볼 때는 브런치와 구글의 블로거가 똑같이 보인다.

브런치는 블로그는 한 단계 고급스러운 이미지로 승격을 시켰다.

그러나 구글의 통계 정보나 검색을 따라갈 수는 없을거라 생각된다.

구글은 중국을 제외한 나라의 가장 성공적인 비지니스 모델이기 때문이다.

이 때문에 모든 글을 이쪽으로 이전을 한 것이고...

브런치를 다시 시작한 이유는 브런치에서 쓰고 이쪽으로 카피하기 위해서이다.

브런치에 글을 쓸 때는 뭔가 좀 더 생각해서 쓰게 된다.

고정 구독자가 있다는 것이 방종하지 못하게 한다.

그래서 다시 시작하게 되었다.

일기장 이름을 바꾼 것처럼

이제 정말 진지하게 살아야 할 것 같아서.

.
.
.

말이다.

Creational Pattern


Creational Pattern 에 대한 썰

byHAJUNHOApr 18. 2018

0. 시작

400 구독자가 보셨던 내 지난 글은 실무프로그래밍 기초편을 위한 글이고, 이 글부터는 중급편이라 자세한 설명은 생략한다. 코드도 책에만 실리지 딱히 공개 안 한다. 같은 회사에서 패턴 강의 들은 친구들이 유출하면 모르겠지만 ㅠㅠ 그리고 존댓말이 아니라 반말임. 만나면 존댓말 쓸거니 글에서는 이해해 주3. 최근 안드로이드와 iOS 파트를 후임들에게 물려주고 있다. 안드로이드 플랫폼 자체가 패턴 덩어리. 그리고 많은 디자인 패턴이 적용된 어플을 주고 있다. 당최 인터넷 찾아봐도 패턴을 잘 모르겠다는 후임들을 위해 세미나를 하고 있는데 작은 몇 마디 만으로도 Creational Pattern을 이해하는 것을 보고 실무 프로그래밍 중급편에 실릴 내용으로 세미나를 하여 여기도 적어 본다. 우선 "썰"이라 붙인 이유는 자세한 설명은 인터넷에 많으니 그들의 연결 개념을 전체적으로 말해두려고 한다. 열심히 공부하다 보면 이 글의 말로 Creational 패턴을 모두 연결할 수 있을 것이다.

1. 패턴 공부는 시작은 자바로

우선, 패턴은 자바 기준으로 공부하는 게 맞다. JAVA와 C#은 실무 프로그래밍을 한 입장 + 문법 관점에서 완전히 동일한 언어로 봐도 된다. C++도 마찬가지겠지만 그렇게 보면 안 되겠다. class 가 메소드(펑션, 함수)를 포함한다는 것을 빼면 struct랑 완전히 동일 개념이지만 다르다고 생각해야 하듯이 C++은 다른 언어로 봐야 한다. 물론, 공부할 때 생각만 다르다고 하는 것이지. C/C++, JAVA, C#, SWIFT에 적용되는 패턴은 완전히 동일하다. C/C++ 만 한 친구들에게 자바를 이해시키고 예제 코드를 짜게 하는데 딱 하루 걸렸다. 그다음 날은 전혀 스트레스 없이 완전하게 자바 코드를 짜고 자바 기반의 안드로이드 프로그램을 수정하기 시작했다. 그러나 자바 기준으로 이야기를 하는 것에 대해서는 이해를 하기 바란다.

2. 패턴을 만든 이유

진심은 이 글 제일 마지막에 적었다. 그러나 표면적 이론을 따지자면, 생성 패턴은 코드수를 줄이기 위해 만들었다. 코드수를 줄이는 방법은 재사용성을 높이는 것이고, 재 사용성을 높이려면 작은 조각으로 나누되 설계를 잘해서 만들어야 한다. 코드수가 많아지더라도 요구사항에 대해 더욱 유연하게 대응해서 개발 시작부터 Acceptance Test를 할 기간을 더 줄일 수 있다면, 그것은 패턴이 잘 적용된 것이다. 패턴 공부는 따로 안 해도 된다. 안드로이드 프로그래밍을 하면 된다. 거기 모든 패턴이 녹아 있다. 그래서 안드로이드 프로그래밍 한 달만 하고 이 글을 보면 바로 모든 게 이해될 것이다.

3. 한방에 설명

자바에서 메모리에 뭔가를 생성시키는 것은 딱 3가지밖에 없다. new, static, primitive type. 그러나 기본 자료형은 빼야 한다.(너무 당연한 것이고 기본자료형으로만 통신하는 프로토콜을 만들 때(안드로이드의 AIDL 같은)만 필요해서 빼는 것이다) 결국 2가지인데, Creational Pattern은 애들은 어떻게 쓰느냐에 따라 다른 것이다.
결국 static와 new를 어떻게 쓸 것이냐.

지워졌었던 내 글을 봤다면 다형성은 void 포인터로 for문을 돌리기 위해 만든 개념이고 캡슐화는 개발자를 믿지 못하기 때문에 만든 개념이라고 이해했을 것이다. 

싱글톤 패턴은 

생성자를 캡슐화하고 하나만 생성되게 하는 것이다. private으로 생성만 만들면 결국 캡슐화를 통해 매소드를 통해서 전달할 수밖에 없는데 하나만 전달하게 하면 싱글톤 패턴이 되는 것이다.

    public static synchronized GlobalSetting getInstance() {
        if (mInstance == null) {
            synchronized (java.lang.Object.class) {
                if (mInstance == null)
                    mInstance = new GlobalSetting();
            }
        }
        return mInstance;
    }

이런 녀석은 예제의 이름처럼 세팅값을 저장하고 여러 클래스에서 불러 쓸 때 매우 유용한다.

팩토리 매소드도 비슷한 녀석이다.


public FactoryMethodModel() {
ARM samsung = makeInstance();
ARM nvidia = makeInstance();
ARM qualcomm = makeInstance();

직접 NEW를 하지 않는 점에서.
다른 클래스에서 생성해서 리턴해 주도록 만들면 된다.

class SAMSUNGEngineer extends FactoryMethodModel {
@Override
protected ARM makeInstance() {
return new ARM("samsungARM");
}
}

문제는 왜 이렇게 만들까? 
final List<ARM> armlist = new ArrayList<>();
리스트를 만들 수 있기 때문이다.
armlist.add(samsung);
이렇게 추가하기 위해서다.

자바의 abstract는 interface와 똑같은 녀석인데 멤버 자료형을 가질 수 있다는 점에서 차이가 있다. 자바 용어로 말하면, 멤버 변수인데 별로 마음에 안 든다. 여하튼, 그것을 이용한다.

얘는 어디에 쓸까? 안드로이드의 BR 서비스랑 비슷한 것을 만든다고 하자. 그럼 앱 규격을 내려주고 하위에서 구현해서 위로 올려주고 나는 목록만 가지고 있으면 알림이 왔을 때 리스트에 대고 for를 돌리면 그게 BroadCast 가 된다. 해당 앱.수행할 메소드() 를 적어주면 메시지 구조나 이벤트 드리븐 기능을 구현할 수 있다.

템플릿 메소드는

사실상 팩토리 매소드와 같다. new 를 하는 주체가 연결 클래스에 있으니 말이다. 템플릿은 interface를 하나 더 두어서 연결 클레스가 구현해야할 메소드의 명세를 명시화 한다는 개념이 추가 되어 사실상 더 큰 개념이다. 인터넷에 이론가들은 절대 동의하지 않는 것 같지만 뭔 프로그램을 만들었는지 알게 뭐람. 컴파일러 만들 때도 실무 경험 없는 이론가들이 만드는 개념은 무쓸.

빌더 패턴은 

new 할 때 멤버변수를 미리 세팅하고자 하기 위해 만들었다. 그냥 생성자를 오버로딩 해서 쓰는게 LOC(Line Of Code)가 더 줄지 않느냐고 묻는다면 어느 정도 수준에서는 빌더 패턴이 더 낫다고 말하고 싶다. 그게 어느 수준이냐?
Chip c = Builder.setBrand("SAMSUNG").setPrice("개비쌈").build();
로 나갈 때 setPrice가 int면 모르겠는데 저렇게 String을 적는다면 setPirce만 오버로딩 하면 되는데 생성자의 경우 경우의 수가 더 많아진다.
그럼 저렇게 . 찍는 것은 어떻게 구현하냐?
        this.brand = brand;
        return this;
return 을 클래스 자체로 리턴하면 계속 . 을 찍을 수 있다. 이론 관점이 아니 코드 관점에서 먼저 보면 참 쉽다.

Strategy 패턴은

인터페이스를 나누는 기술이다. 
라는 것만 알고 인터넷 서핑 공부법(실무프로그래밍 참고)으로 공부하면 된다.

Prototype 패턴은

interface, Abtract, class를 얼마나 예쁘게 만드는지에 대한 연구이다. 사실 팩토리 메소드 패턴인데 객체 생성 이름은 clone()으로 한 것 뿐. clone() 안에 super.clone() 이 있던 말던 최종 clone에는 static 혹은 new가 들어갈 수밖에 없다. 

이 모든 패턴을 조합해서 만든 Creational 패턴이 바로 

Abstract Factory Pattern이다.

Factory Method처럼 바로 하위에서 바로 객체를 생성해서 리턴해 주는 게 아니라 우선 Factory를 받아오고 해당 Factory를 이용해서 new(creation)를 한다. 이렇게 설계하는 과정 자체에 protytype과 stategy 패턴이 들어가고 팩토리에서 실제 객체를 생성하는 패턴은 Factory Method다. 해당 팩토리가 부르는 클래스 안에는 세팅 다 해서 자기 객체 리턴하는 하는데, 생성자가 복잡해진다 싶으면 빌더 패턴으로 구현하는 것이 편하다.


내가 패턴을 공부하게 되었던 것도 학창 시절 교수님께서 구입해 주셨던 GoF Design Pattern 때문인데. 사실 코드로 보다 보니 거기 써져있던 패턴 맵이 그 책의 정수라는 것을 알게 되었다.

권장하는 것은 아니지만 워낙 유명한 책은 인터넷에 항상 PDF로 있으니
gof design pattern filetype:pdf
으로 잘 찾으시고 책이 좋으면 꼭 원서를 구입하시기 바란다.

4. 결론

creational pattern 은 new를 어디서 할지 정하는 패턴.
즉,
new pattern 으로 불러야 한다. 너무 싼티나면

memory allocation pattern.

스타트업 이야기

혹은,
I can't trust you pattern. 사실 패턴이란 것은 협업 시 다른 사람에게 인터페이스, Abstract, Protocol, Specification Documents(스펙) 던져주고 전체 그림을 못 보게 만들려는 수작이다. 전체 소스는 주되 쉽게 접근할 핵심은 말 안하다는(언젠가는 분석된다면 시간이 필요하지)  나 혼자 성공하려면 넌 좀 모르게 할 필요가 있을 때 쓰니까 그런 정치에 맞서 사용자가 원하는 프로그램을 만들고 싶을 때, 패턴을 잘 배워두자.

bootcamp 지우기

맥북 프로 레티나 터치바 diskutility 에서 bootcamp 파티션 삭제하면 검은색에서 회색으로 바뀐다(APFS로 지정) 파틴션 아이콘 클릭하여 - 버튼을 이용하여 삭제하면 끝.