Computer Science/Software Engineering

Computer Science/Software Engineering

[보안] 해시 함수(Hash Function)와 생일 역설(Birthday Paradox)

해시 함수(Hash Function) 해시 함수(Hash Function)란 주어진 원문에서 고정된 길이의 의사난수를 생성하는 연산기법이며, 이에 생성된 값을 '해시값'이라고 한다. 다시 말해 해시 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 변환하는 함수이다. 해시 함수에 의해 얻어지는 값을 해시 코드, 해시 값, 메시지 다이제스트 또는 해시(Hash)라고 한다. 암호화 해시 함수(cryptographic hash function)는 해시 함수의 일종으로, 해시 코드로 부터 원래의 입력값을 추정하기 어려운 성질을 가지는 경우를 의미한다. 암호화라는 의미가 암호문으로 부터 암호화하기 전의 평문을 추정하기 어렵게 만든 것이기 때문이다. 이 암호화 해시 함수에는 MD5, SHA, SHA‐1, SHA..

Computer Science/Software Engineering

[Server] 웹 서비스 메소드(PUT, DELETE 등) 취약점

웹 서비스 메소드는 HTTP METHOD와 같은 말로 이해해도 무방하다. API 서버를 구현하며 Request를 보낼 때 GET과 POST를 이용하는 것이 가장 널리 알려져 있지만 최근 RESTful 형태를 많이 사용하여 PUT, DELETE 등도 생소한 개념은 아닐 것이다. 아래는 기본적인 웹 서비스 메소드의 종류 및 특징이다. 웹 메소드 특징 GET: 요청하는 내용이 URL에 노출되는 형태이며, Request-URI 뒤에 붙는 query string에는 길이 제한이 있다. 요청을 보내고 응답을 받는 형태로 검색 등에 사용된다. HEAD: GET과 유사하지만, Response로 BODY를 반환하지 않고 응답 코드만 있다. 응답 내용 없이 정상 호출 여부를 확인할 때 사용하는 Health-Check 페이..

Computer Science/Software Engineering

[Design Pattern] 싱글톤 패턴(Singleton Pattern)

소프트웨어 엔지니어링에서 의존성 주입(Dependency Injection, DI)은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다. "의존성"은 예를 들어 서비스로 사용할 수 있는 객체이다. 또한 공유 변수를 이용한 구성이 필요할 때 추후 유지보수와 메모리 효율 등을 위해 상태 관리(State Management)가 필요하다. 이와 관련된 수단으로 Singleton, Provider 등이 있다. 이 중 싱글톤 패턴(Singleton Pattern)을 알아보려 한다. 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴(Singleton Pattern)은 객체의 인스턴스가 오직 1개만 생성하여 사용하는 패턴을 의미한다. 생성자를 여러 번 호출하더라도 실제 생성되는 객체는 하나이며 최초로 생..

Computer Science/Software Engineering

[QA 전략] PoC(Proof of Concept)

PoC(Proof of Concept) PoC(Proof of Concept)란 개념 실증이라는 과정인데 새로운 프로젝트가 실제로 실현 가능성이 있는가, 효과와 효용, 기술적인 관점에서부터 검증을 하는 과정을 의미한다. 이는 IT계에서 가장 중시되는 이유는 기업에서 IT 활용이 업무효율화를 위한 '기업 IT'에서 비즈니스의 성장이나 수입 향상에 직접 기여하는 '비지니스 IT'로의 영역 확장이 이루어졌기 때문이라 한다. 하지만 최근 PoC는 IT 한정 용어가 아닌, 의료계에서 신약 유효성 검증이나, 영화계에서 스토리가 CG로 재연 가능한 것을 검증하는 것을 일컫는 용어로도 사용된다. 예를 들어 AI관련 프로젝트가 진행되면 검증된 기술이 아니라 새로운 기술을 사용할 수 있다. 이 때문에 예상한 대로 결과가 ..

Computer Science/Software Engineering

[QA 전략] CI/CD(Continuous Integration/Continuous Deployment)

CI/CD(Continuous Integration/Continuous Deployment)란 지속적 통합(Continuous integration, CI)과 지속적 제공(Continuous delivery, CD)를 뜻한다. 애플리케이션 개발팀이 더 자주 그리고 안정적으로 코드 변경을 제공하기 위해 사용하는 문화와 운영 원칙, 일련의 작업 방식으로 구성된다. 다시 말해 git에 코드를 올리는 것만으로도 누군가가 빌드와 테스트, 배포까지 해주어 코드를 수정하고 빌드와 테스트를 하고 배포까지 수행하는 시간을 단축시키고 개발에 더 많은 시간을 투자할 수 있도록 하기위해 생겨난 방식이다. DevOps와 같은 것처럼 보이지만 확실히 구별하자면 DevOps는 Development(개발+테스트) + Operatio..

Computer Science/Software Engineering

[QA 전략] 데브옵스(DevOps)

DevOps DevOps는 소프트웨어 개발 팀과 IT 팀 간의 프로세스를 자동화하고 통합하는 일련의 관행, 도구 및 문화적 철학이다. 팀 지원, 팀 간 커뮤니케이션 및 공동 작업, 기술 자동화가 가장 중요한 요소라 볼 수 있다. 이는 일반적으로 회사 개발팀의 개발자들이 어떠한 프로젝트를 수행하고 개발을 완료하면 프로젝트가 끝나는 것이 아니라 운영팀을 통해 빌드, 테스트, 배포까지 완료되어야 하는 구조에서 나오게 된 개발 방법론이다. 하나의 작업을 완료하기 위해 두 팀간의 협업이 필요한 기존 구조는 서로의 입장을 잘 이해하고 배려해주는 이상적인 상황만 존재한다면 좋겠지만 현실에선 그러기 쉽지 않다. 개발자들은 계속해서 새로운 기술들을 도입하고 싶어하지만, 운영팀은 해당 프로젝트의 안정성에 가장 초점을 둔다..

AlienCoder
'Computer Science/Software Engineering' 카테고리의 글 목록 (2 Page)
loading