본문 바로가기
반응형

Programming34

객체지향 설계 원칙 SOLID 원칙 SOLID 원칙객체지향의 5가지 핵심 설계 원칙이다. 이외에도 여러 가지 마이너 한 원칙들이 존재하지만 SOLID만 원칙을 준수해도 좋은 코드가 나온다.로버트 마틴이 정리한 좋은 객체지향 설계의 5가지 원칙이다.1. SRP (Single Responsibility Principal) 단일 책임 원칙하나의 책임을 가지는 클래스를 가져야 한다.하나의 책임을 가진다는 것은 클래스 내에서 해야 할 일이 많지 않고 명확하게 하나의 일을 수행해야 한다는 것이다. 중요한 핵심은 변경되는 어떤 경우라도 하나의 이유로만 변경이 되어야 한다는 것이다.너무 많은 것을 알고 여러 책임을 가지고 있다면 다양한 이유로 클래스 하나가 변경될 수 있다. 이러한 경우는 SRP 원칙이 지켜지지 않았다고 할 수 있다.다음과 같은 예시는 .. 2024. 8. 2.
파이썬 eval() exec()함수와 취약점 발생 가능성 파이썬에는 명령문, 식 등을 실행시켜주는 내장함수가 존재합니다. eval, exec, compile함수가 있습니다. 1. exec( )&eval( ) 1.1 exec 함수 파이썬 코드 동작시 동적실행에서 사용될 수 있습니다. 문자열, 코드객체를 인수로 받습니다. 문자열의 경우 분석을 한뒤 실행하고 코드객체는 바로 실행됩니다. 반환값은 None (반환을 하지 않습니다.) 실행만을 위해 사용하는 함수입니다. exec(object, globals, locals) # object = 'print("hello world")' globals, locals는 선택사항입니다. 딕셔너리 객체로 받을 수 있습니다. 1.2eval 함수 eval은 인수로 표현식을 받습니다. 표현식을 받아 코드 동작중에 표현식을 실행합니다. .. 2022. 8. 31.
JavaScript 호이스팅 호이스팅 선언문이 코드 상단으로 끌어올려진 것처럼 동작하는 것이 변수 호이스팅이라 합니다. 변수 선언 키워드 var뿐 아니라 var, let, const, function, class 키워드들도 호이스팅이 됩니다. 일부 키워드들 중 정확히는 호이스팅이 되지 않는 것처럼 동작되는 것들도 있습니다. 변수 호이스팅 console.log(num) var num 해당 코드에서는 에러가 발생하지 않고 undefined가 출력됩니다. 이는 변수 선언이 작성한 코드대로가 아닌 상단에서 선언되기 때문입니다. 자바스크립트 엔진은 실행 전 코드를 훑는 과정을 거칩니다. 변수와 함수 선언을 먼저 찾아내어 선언을 한 후 실행을 하게 됩니다. 작성한 코드에서 선언문이 어디에 있던 먼저 선언되어 실행됩니다. 자바스크립트는 변수 선.. 2022. 3. 17.
파이썬 math 패키지 (삼각함수, 상수, 로그 사용) math 패키지 고급 수학 함수나 과학 관련 함수가 필요할 때 사용하는 패키지입니다. 파이썬이 설치될 때 같이 설치되어 따로 설치할 필요 없이 바로 사용 가능합니다. pi나 e 같은 특수한 상수 값도 제공합니다. math 패키지 카테고리 삼각함수 : sin, cos, tan 등 기본 삼각함수 역삼각함수 : asin, acos, atan 등 역삼각 함수 하이퍼 삼각함수(쌍곡선) : sinh, cosh, tanh와 asinh 등 쌍곡선 형태의 삼각함수 각도와 라디안 : 흔히 쓰는 각도(º)와 π 같은 라디안 값으로의 변환 각도가 친근할 수 있으나 삼각함수에서는 라디안 값을 사용하므로 라디안으로 변환이 필수적임 로그 : 밑이 2와 10, e 등의 로그를 지원 정수 변환 및 기타 : floor와 ceil 같은 .. 2021. 11. 6.
파이썬 random 패키지 파이썬 프로그래밍을 하다 보면 난수를 필요로 하는 시점이 발생합니다. 파이썬에는 파이썬을 설치하면서 random패키지도 같이 설치되어 따로 모듈을 설치하지 않고 random 패키지를 탑재할 수 있습니다. random 패키지는 단순 난수 도구 이외의 통계에 필요한 간단한 도구를 제공합니다. 간단한 난수 구현기이며 매우 완벽한 100% 난수가 아닌 의사 난수입니다. Random 패키지 함수 random() random.random() 1을 제외한 [0,1) 사이의 실수 무작위 수를 생성합니다. randint(a, b) random.randint(a,b) 동일한 확률로 a~b 범위에 무작위 정수를 반환합니다. b를 포함한 범위이므로 [a, b]입니다. shuffle(list) random.shuffle(lis.. 2021. 10. 31.
파이썬 바이너리 파일 입출력 struct와 pickle 바이너리 파일 입출력은 저수준 방식의 파일 입출력을 사용하는 방법입니다. 바이트 열을 다루게 됩니다. 기본적으로 텍스트 파일 입출력과 사용방법이 동일합니다. 옵션에 바이너리 모드인 것을 명시해주면 됩니다. with open('s.txt','wb') as ori: ori.write(b'1234') 바이너리 데이터를 다루기 위해서 struct, pickle 패키지 등의 패키지를 알게 되면 다루기가 수월합니다. 바이너리를 다루는 만큼 저수준 데이터를 다루므로 운영체제, 시스템, 언어에 대한 이해도가 있으면 좋습니다. struct 패키지 파이썬으로 다루지 않은 바이너리 파일을 다루려면 struct 패키지를 사용하는 것이 좋습니다. 바이트 문자열로 pack, unpack 함수가 있습니다. c의 구조체 형식으로 저.. 2021. 9. 25.
반응형