전체 글

푸더기의 다사다난한 블로그입니다
"세푼짜리 오페라"는 화려하고 고급스럽게 여겨지는 '오페라'라는 문화 현상에 대한 풍자적인 요소를 가지고 있다. 주된 내용은 부패한 자본주의 사회를 신랄하게 풍자하고 비판하는 블랙 코미디로, 상류사회와 범죄 세계가 본질적으로 다르지 않다는 점을 드러낸다. 주인공 매키는 강도, 살인, 방화 등 여러 범죄를 저지르며 이야기가 전개된다. 작품의 서막 부분에서 거리 악사가 부르는 노래로, 매키의 범죄 행위를 고발하면서 동시에 그의 캐릭터를 효과적으로 설명한다. 이 노래는 Barrel Organ이라는 악기로 반주가 이뤄진다. 이 노래는 미국 브로드웨이까지 넘어가서 재즈 스탠다드로 자리잡게 된다.
Model이란, 현실을 단순화 한 것이다. 주어진 추상화(abstraction) 수준에서 핵심 측면(assential aspects)을 포착한다. 모든 시스템은 다양한 모델을 사용해서 다른 측면에서 설명될 수 있다. 복잡한 시스템의 모델을 만드는 이유는 그 시스템을 전체적으로 이해하기 어렵기 때문이다. 모델링을 통해 우리는 네 가지 목표를 달성한다. - 시스템을 시각화(visualize)하여 현재의 모습이나 원하는 모습을 볼 수 있게 한다. - 시스템의 구조나 행동을 명세(specify)한다. - 시스템을 구축하기 위한 청사진을 제공한다. - 우리가 내린 결정을 문서화한다. 어떤 모델을 만들지 선택하는 것은 문제를 어떻게 해결할지와 솔루션의 형태에 큰 영향을 미친다. 모든 모델은 다양한 정밀도(preci..
객체 지향 패러다임은 주로 객체, 클래스, 상속이라는 세 가지 주요 개념을 기반으로 한다. 객체(Object): 상태와 행동을 가진다. 상태는 속성(변수), 행동은 메서드(함수)로 표현, 서로에게 'messages'를 보내 소통한다. 클래스(Class): 객체를 생성하기 위한 템플릿이나 청사진 상속(Inhertance): 클래스 간의 관계를 표현하는 메커니즘 또 중요한 개념으로 "polymorphism(dynamic binding, 다형성)"이 있다. 동일한 이름의 메서드나 연산자가 다양한 방식으로 동작할 수 있다. Object 객체는 명확한 경계와 의미를 가진 것 또는 개념이다. 이는 Tangible Things(물리적인 것), Concepts&Processes(개념 및 과정)이 있다. Tangible..
OO Approach(객체지향적 사고 접근법) 객체지향설계에서는 각 객체가 수행해야 할 책임이 명확하게 정의되어 있다. OOA - 객체 지향 분석 OOD - 객체 지향 설계 OOP - 객체 지향 프로그래밍 성공적인 소프트웨어는 이해관계자(stakeholder)의 requirements를 충족시켜야 한다. 또, 시간과 예산(budget) 내에 개발되어야 하고, 변화에 대한 탄력성(resilient to change)을 가져야 한다. software crisis는 컴퓨터의 발전과 계산 능력의 증가로 인해 소프트웨어의 복잡성, 요구사항, 오류가 증가하며 발생한 문제이다. development process는 누가-who 어떤 일을-what 언제-when 어떻게-how 특정 목표를 달성하는지를 정의한다. sof..
GCD, Euclid Algorithm gcd(a, b) = gcd(b, a%b) 를 기반으로 함. Modular Arthmetic a mod b = (a+kb) mod b, k는 임의의 정수 x*y mod b = (x mod b * y mod b) mod b Extended Euclid Algorithm 유클리드 알고리즘으로 나온 최대공약수로부터 역추적하며 gcd(a, b) = ax + by가 되는 x와 y를 찾음. int extended_gcd(int a, int b, int *x, int *y) { if (b == 0) { *x = 1; *y = 0; return a; } int x1 = *x; int y1 = *y; int gcd = extended_gcd(b, a % b, &x1, &y1); *..
symmetric key, 대칭키는 키를 하나만 사용하는 암호화에서 사용한다. 암호문을 보내는 사람과 푸는 사람 모두 같은 키를 가지고 있어야 하며, 전자서명이 안되기 때문에 메시지를 위조하거나 내가 안보냈는데 보냈다고 하는 등 문제가 발생할 수 있다. (유용하지 않다는 뜻이 아니다.) Public-Key Cryptography Asymmetric key => public key + private key 공개키 시스템은 공개키와 개인키가 있고, 공개키는 모두에게 보여져도 상관없고 개인키는 숨긴다. 공개키로 암호화했다면 개인키로 풀 수 있고, 개인키로 암호화했다면 공개키로 풀 수 있다. 장점으로는 다음과 같다. 1. 키 분배 문제를 해결할 수 있다. 상대방에게 공개키만 보내주면 되고, 대칭키 시스템의 키 ..
Fermat's Theroen (페르마 정리) 9^21 mod 11 이라면 얼마일까? a와 p가 서로소 관계라면, a^(p-1) ≡ 1 (mod p)이다. 또한 a^p ≡ a (mod p) 이다. 9^10 ≡ 1 (mod 11) 이므로, 9^20 ≡ 1 (mod 11) 9^21 mod 11 = (9^20 * 9) (mod 11) = 9^20 (mod 11) * 9 (mod 11) = 9 이다. Euler Totient Function ø(n) 나머지로 나올 수 있는 집합, complete set of residues는 0 ... n-1 이다. 그 집합에서 n과 서로소인 집합, reduced set of residues도 있다. 예를 들어 n이 10인 경우, complete set of residues =..
랜덤 넘버는 암호학에서 자주 쓰인다. - nonces는 한 번만 사용되는 일회용 값으로, 재생공격을 방지하는데 사용된다. - 세션 키는 각 세션마다 랜덤으로 생성된다. - 공개 키 생성에서 키 쌍을 생성할 때 랜덤으로 생성된다. 랜덤 넘버는 통계학적으로 무작위여야하고, 각 난수는 서로 독립적이고 예측 불가능해야한다. TRNG 실제 무작위 소스를 랜덤생성기의 입력으로 사용한다. 무작위 소스는 엔트로피 소스라고 부른다. 컴퓨터의 물리적 환경에서 얻을 수 있다. 예를 들어, 키보드 - 마우스 타이핑 패턴 및 속도, 디스크의 전기적 활동, 시스템 클럭의 순간 값과 환경 소음이나 온도 변동 등 물리적인, 아날로그 소스 값을 이진 출력으로 변환하여 사용한다. PRNG Pseudorandom Number Genera..
푸더기
푸더기와 푸닥푸닥