Computer Science

    Code Coverage

    Code Coverage? 코드 커버리지 소스코드를 기반으로 수행하는 화이트 박스 테스트를 통해 측정한다. 블랙박스 테스트 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식 올바른 입력과 올바르지 않은 입력을 입력해 올바른 출력이 나오는지 테스트 사용자 관점의 테스트 방법 화이트박스 테스트 응용 프로그램의 내부 구조와 동작을 검사하는 테스트 방식 내부 소스 코드를 테스트하는 기법 개발자 관점의 단위 테스트 방법 측정 기준 구문 (라인 커버리지): 코드 한 줄이 한 번이상 실행된다면 충족 조건: 모든 조건식의 내부 조건이 true/false를 가지게 되면 충족 조건 커버리지를 기준으로 테스트 할 경우 구문 커버리지와 결정 커버리지를 만족하지 못하는 경우가 존재할 수 있다. 결정 (..

    Shell prompt를 별칭으로 구분하기

    AWS를 이용해 여러개의 인스턴스를 프롬프트로 접속하다보니, 헷갈리는 경우가 발생했다. 그래서, 간단하지만 쉘 프롬프트를 별칭으로 구분하는 방법에 대해 정리하게 되었다. $ sudo vi ~/.bashrc # 가장 아래에 작성한다. USER={등록할 별칭} PS1='[\e[1;31m$USER\e[0m][\e[1;32m\t\e[0m][\e[1;33m\u\e[0m@\e[1;36m\h\e[0m \w] \n\$ \[\033[00m\]' $ source ~/.bashrc sudo vi ~/.bashrc를 통해 나타나는 창에, USER와 PS1를 등록하면 쉘 프롬프트를 별칭으로 구분할 수 있다. 위에 작성해둔 예시로 예를 들어보자면, USER=JENKINS, PS1은 위와 동일하게 작성한다면 다음과 같은 형태로 프..

    원격으로 DB 연결을 요청할 때, bind-address의 의미

    Summary 🚀 통신 요청을 받는 NIC가 다르며, 소켓 생성시 각 아이피마다 서로 다른 소켓 파일이 생성된다. 따라서 mysql.cnf 파일에 작성한 bind-address에 알맞은 ip를 갖는 소켓 파일에서 오는 요청만 허용한다. 애플리케이션 서버와 디비 인스턴스를 분리하면서, 원격으로 DB에 커넥션 연결을 요청해야했다. 그렇게 하기 위해서는 DB 인스턴스에 mysql을 설치하고, mysql.cnf 파일에서 보안 그룹에 알맞은 port와 bind-address를 설정해주어야한다. 그와 관련된 글은 여기 에서 자세히 확인할 수 있다. 우선 DB 인스턴스를 분리하면서 가장 반감이 들었던 부분은 bind-address를 0.0.0.0으로 설정해줌으로서 네트워크 전체 대역에서 오는 요청을 허용해주어야만 커..

    API란

    API란 무엇일까? 우아한 테크코스에서 미션을 진행하면서 API가 무엇일까에 대한 질문을 받았는데, 완전히 답변할 수 없다는 것을 깨달았다. 나는 API가 정확히 무엇인지도 모르고, API를 구현하고 있었던 것이다.. 우선 API란 Application Programming Interface의 약자로서 서로 다른 두 물체간의 접점, 상호작용을 의미한다. 즉, 응용 프로그램에서 사용할 수 있도록 기타 다른 응용 프로그램을 제어할 수 있도록 하는 것을 말한다. 우리는 API를 왜 사용하는가? API를 사용하면 우리가 제어하고자 하는 시스템의 환경을 정확히 알지 못하더라도 손쉽게 제어할 수 있다. 예를 들어, javascript에서의 alert기능은 alert를 통해 브라우저에 경고창을 발생할 수 있는데, 이..

    CORS (Cross Origin Resource Sharing)

    CORS란? 기존 브라우저의 정책(Single Origin Policy)은 보안상의 이유로 다른 도메인의 리소스를 가져오는 것이 불가능했다. 이를 해결하기 위해 등장한 표준 기술이 CORS (Cross Origin Resource Sharing)이다. CORS는 도메인이 다른 자원에 리소스를 요청할 때 접근 권한을 부여하는 매커니즘이다. 추가적인 Http Header를 이용하여 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록 하는 것이다. public class PathApiController { @CrossOrigin("http://localhost:6666") //localhost:6666에 대해서만 개방한다. @GetMapping("/paths") public ResponseEntity..

    Cloud란

    인프라 미션의 학습로그를 쓰면서, 클라우드란 무엇인지에 대해 정리해보고 싶어졌다. (즉, 이 글의 목적은 클라우드가 무엇인지를 알아가는 것이다.) public cloud 서비스를 제공해주는 곳은 많은데, 각각은 클라우드를 어떻게 정의하는지 알아보자. (궁금) Microsoft Azure 클라우드에 대한 정의가 모호할 수 있지만, 클라우드란 각각 고유한 기능을 가진 서버의 글로벌 네트워크를 설명하는 데 사용되는 용어이다. 클라우드는 실제 엔티티가 아니지만 함께 연결되어 하나의 에코 시스템으로 작동하게 되어 있는 전 세계에 분산된 원격 서버의 광대한 네트워크이다. 이 서버는 데이터 저장 및 관리, 애플리케이션 실행 또는 스트리밍 비디오, 웹 메일 또는 소셜 미디어와 같은 콘텐츠 또는 서비스를 제공하도록 설계..

    서버에서 Thread.dump 생성 및 로컬에서 다운로드하기

    1. ps -ef 로 실행중인 프로세스를 확인한다. 2. jstack \[PID\] > \[thread.dump를 저장할 경로\]를 입력한다. 3. BASTION 서버로 접속한다. 4. 바스티온 서버에서 운영 서버의 thread.dump 정보를 가져온다. rsync -avzh ubuntu@ 5. 연결을 끊고, scp 명령을 통해 바스티온 서버의 에 저장된 thread.dump를 로컬에서 다운로드한다. scp -i ubuntu@ . //마지막에 점 있음! 참고 자료 www.baeldung.com/java-thread-dump

    생성한 EC2 인스턴스의 스토리지의 용량을 재부팅 없이 늘리려면 어떻게 해야할까?

    이 글은 docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html를 참고하였습니다. AWS에서는 EBS를 이용하여 스토리지를 구성하고 있다. EBS란 Elastic Block Store의 약자로 일종의 하드디스크라고 생각하면 된다. 필요에 따라서 즉시 생성하고 제거할 수 있다. 또한 스냅샷 기능을 제공하기 때문에 EBS의 현재 상태를 그대로 보존할 수 있다. 더불어 CloudWatch를 통해 EBS의 통계를 열람할 수 있다. 이제, 생성한 EC2 인스턴스의 스토리지 용량을 재부팅없이 늘려보는 실습을 진행해보자. 먼저, 인스턴스 관리 페이지에서 해당 인스턴스에 할당된 볼륨을 확인한다. 이는 AWS EC2 대시..

    Max-user-processes와 Open files에 대해서 잘 모릅니다.

    Q. 현재 서버에서 몇 개의 연결까지 가능한가요? A. 모르겠다. 이 글은 모르는 것들만 잔뜩 모아놓은 글이니 넘어가셔도 됩니다. 리눅스에는 프로세스 당 별도의 스레드 제한이 없으며 시스템의 총 프로세스 수에 대한 제한만 있다. 스레드는 기본적으로 리눅스에서 공유 주소 공간이 있는 프로세스일 뿐이다. cat /proc/sys/kernel/threads-max를 통해 max-threads (시스템의 총 프로세스 수와 동일한가?)에 대한 값을 알 수 있다. file-max는 커널에 설정된 max file 값인 것 같다. 여기서 파일이라는 것이 정확히 무엇을 의미하는지는 모르겠다.threads-max는 리눅스에서 최대로 생성할 수 있는 쓰레드의 개수인 것 같다. 여기서 ulimit -u를 통해 유저 1명이 사..

    DDos 공격은 무엇이고, 어떻게 대응하면 좋을까?

    DDos 공격이란? DDos 공격이란 분산 서비스 거부 공격(Distributed Denial of Service Attack)으로서 인터넷상에서 사이트 공격을 하는 방법 중 하나로 사이버 테러의 대표적인 경우이다. 기본 원리는 생각보다 단순하다. 웹 서버에 비정상적으로 많은 트래픽을 흘려보내 웹 서버가 과도한 트래픽 소모 및 프로세스 진행, 과도한 입출력을 수행하도록 하여 서버가 먹통이 되게 만드는 기본적인 서버 공격 방법이다. (어떤 글에서 다구리와 같다고..) 나쁜 의도가 아닌 정상적인 접속이 폭주에 먹통이 되는 것도 DDos 공격과 같은 원리를 갖는다. 가장 쉬운 예를 들자면 수강신청 때 너무 많은 학생들이 한꺼번에 몰려 사이트가 먹통되는 경우? 이러한 경우 또한 DDos라고 볼 수 있으며 어택이..