본문 바로가기
[암호학] RSA 에 대해 간단히 알아보자 [암호학] RSA 에 대해 간단히 알아보자 -RSA 는 공개키 암호시스템의 하나로, 암호화 & 전자서명에 대한 최초의 알고리즘이다. -RSA 는 이 알고리즘을 체계화한 세 사람의 이니셜을 딴 것이다. -RSA 는 키 생성, 암호화 이 두가지가 핵심 과정이다. -(구체적인 내용은 모르겠지만) RSA 암호쳬게의 안정성은 큰 숫자를 소인수 분해하기 어렵다는 것이 기반을 둔다.그래서 큰 수의 소인수 분해를 획기적으로 빠르게 할 수 있는 알고리즘이 발견되면 이 암호 체계는 가치가 떨어질 것이다.( 양자 컴퓨터 시대가 도래하면 가장 크게 위기를 맞을 암호 체계라고 한다. RSA 768bit 은 2009년도에 깨졌다고 한다. ) -RSA 는 두 개의 키를 사용한다.키는 메시지를 암호화하는 상수(Public Key)와.. 2018. 5. 12.
[홍대 카페] 네이버후드 - Neighborhood 고양이도 있어요! [홍대 카페] 네이버후드 - Neighborhood 고양이도 있어요! 0624 / 0633 "이웃" 이라는 뜻을 가진 카페 네이버후드( Neighborhood ).이름이 정겨운 것에 비해 인테리어는 꽤 세련된 카페입니다. 야외 공간도 있어서 날씨 좋은 날은 맑은 하늘을 바라보며,시원한 바람을 맞으며 커피 한잔을 즐길 수 있죠. 저녁 어스름해질 때 분위기가 참 좋습니다. 구석에는 마치 설정을 해놓은듯한 세트가 있는데요.실제 손님들이 책을 읽다가 함께 담배라도 피러 간듯합니다. 설정같이 너무 이쁜 모습에 확대샷 우리는 외부에 앉았습니다.내부 사진도 한 장 찍어봅니다. 안쪽은 그 나름대로 모던하며 쾌적합니다. 부라니는 아이스 아메리카노.그림고 저는 깔루아 밀크를 주문합니다. 여기 카페 가격은 쎈 편입니다.아메.. 2017. 8. 26.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #1 ~ #8 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #1 ~ #8 #1 : Objective-C 의 기원과 친숙해져라. Objective-C는 객체 지향 기능을 추가한 C 의 확장이다. Objective-C는 동적 바인딩을 사용하는 메시징 구조를 이용한다. 동적 바인딩은 객체 타입이 실행 시간에 밝혀지는 것을 뜻한다. 메시지를 받았을 때 동작할 코드를 컴파일러가 아닌 런타임이 결정한다. C의 핵심 개념을 이해하고 있으면 Objective-C를 효과적으로 작성하는 데 도움이 된다. 특히 메모리 모델과 포인터를 잘 이해하고 있어야 한다. #2 : 헤더에 헤더를 포함하는 것을 최소화하라 항상 헤더를 포함하는 것을 최대한 미루라. 이는 보통 헤.. 2017. 8. 10.
[Effecitve Objective-C] #4 전처리기 #define 보다는 타입이 있는 상수를 사용하라 [Effecitve Objective-C] #4 전처리기 #define 보다는 타입이 있는 상수를 사용하라 출처 : Effective Objective-C -#define 은 전처리기 지시어이다. (preprocessor) -#define 정의는 타입에 대한 정보가 없다. -#define 이 헤더 파일에 선언되어 있다면 그 헤더 파일을 포함하는 모든 곳에서 #define 으로 정의한 상수값을 치환한다. -preprocessor 보다는 상수를 정의하는 것이 항상 더 좋은 방법이다. // implementation static const NSTimeInterval kAnimatinoDuration = 0.3; @implementation @end -상수의 일반적인 표기법은 k 소문자를 상수 맨 앞에 붙이는 .. 2017. 7. 24.
[Effective Java] 외부에 제공하는 모든 API 요소에 대해 문서화 주석을 넣자. [Effective Java] 외부에 제공하는 모든 API 요소에 대해 문서화 주석을 넣자. - 사용 가능한 API 라면 반드시 문서화해야 한다. 만일 문서화 주석 규칙에 친숙하지 않다면 배워야 한다. - API 를 문서화하려면, 외부에 제공하는 모든 클래스, 인터페이스, 생성자, 메소드, 필드의 선언부 앞에 문서화 주석을 넣어야 한다. 만일 어떤 클래스가 직렬화될 수 있다면 직렬화 형태도 문서화해야 한다. - 문서화 주석이 빠진 API 를 사용하는 것은 실망스럽고 에러가 생길 가능성이 많다. 유지보수 하기 쉬운 코드를 작성하려면 외부에 공개되지 않는 대부분의 클래스, 인터페이스, 생성자, 메소드, 필드에 대해서도 문서화 주석을 작성해야 한다. - 메소드의 문서화 주석에서는 메소드와 클라이언트 사이의 계.. 2017. 1. 23.
[Effective Java] 비트(bit) 필드 대신 EnumSet 을 사용하자. [Effective Java] 비트(bit) 필드 대신 EnumSet 을 사용하자. - 보통 비트 값을 constant 로 사용할 때 아래와 같이 int enum 패턴을 사용하여 각 상수에 2의 n승을 대입한다. // 비트 필드 public static final int STYLE_BOLD = 1 2016. 12. 26.
[Effective Java] ordinal 대신 인스턴스 필드를 사용하자. [Effective Java] ordinal 대신 인스턴스 필드를 사용하자. - 모든 enum 은 ordinal 메소드를 갖고 있으며, 이 메소드는 enum 타입에 있는 각 enum 상수의 위치를 서수(첫번째, 두번째와 같이 순서의 의미를 가진 수)로 반환한다. 이 ordinal 메소드는 enum 의 순서에 절대 변화가 없다면 사용할 수 있지만, 유지보수가 있을 시에는 문제가 된다. 상수 값의 순서가 바뀌면 바로 값이 바뀌어 기존 int 상수를 사용하는 것과 별반 다를 바 없어진다. 아니 오히려 더 유지보수가 어려워질 수 있다. - 만일 int 값이 필요하다면 ordinal 을 사용하지 않고, 생성자에 번호를 넣는 방법으로 따로 variable 을 지정해서 사용하는 것이 좋다. - ordinal 은 En.. 2016. 12. 20.
[Effective Java] int 상수 대신 enum 을 사용하자. [Effective Java] int 상수 대신 enum 을 사용하자. - int enum pattern 이라고 불리는 int 를 이용한 분기는 단점이 많다. - 타입 안전을 보장하지도 않고, 편리하게 사용할 수 있는 방법도 제공하지 않는다. 즉 취약하다. - int enum 상수를 출력 가능한 문자열로 쉽게 바꾸는 방법도 없다. - 하나의 int enum 그룹에 있는 모든 상수를 loop 처리하거나, 그룹 사이즈를 알 수 있는 좋은 방법도 없다. - int enum 패턴의 변이로 String enum 패턴이 있는데 더더욱 바람직하지 않다. print 하는 부분에서는 좋지만, 문자열 비교에 의존하여 성능 문제가 생길 수도 있다. 더욱 문제가 되는 것은 필드명 대신 string 상수 값을 클라이언트 코드에.. 2016. 12. 19.
[Effective Java] 타입을 정의할 때만 인터페이스를 사용하자. [Effective Java] 타입을 정의할 때만 인터페이스를 사용하자. - 인터페이스를 구현한다는 것은 해당 클래스가 해당 인터페이스의 "타입" 이 될 수 있다는 것을 의미. 따라서 인터페이스는 인스턴스로 할 수 있는 일을 나타내야 하고, 다른 목적으로 정의하는 것을 옳지 않다. - 상수 인터페이스(constant interface) 가 인터페이스의 기본 목적에 어긋난다. 메소드를 갖지 않고, 외부에 제공하는 상수 값을 갖는 static final 필드만을 갖는다. 이렇게 하지 말자!! 상수 인터페이스는 인터페이스를 "형편없이" 사용하는 예이다. 상수 인터페이스는 네임 스페이스를 줄이는 역할도 한다. - 상수를 외부에 제공하고 싶다면 다음의 방법을 사용하는 것이 좋다. 만일 어떤 상수가 기존 클래스나 .. 2016. 11. 8.
반응형