전체 글

전체 글

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

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

    Could not determine java version from '11.0.11'. 에 대한 해결 방법

    java -version // 11 ./gradlew --version // 제목과 똑같은 에러가 발생하며 버전을 확인할 수 없음. 이 경우, Java 버전을 1.8로 낮추면 해결된다. sudo apt-get install openjdk-8-jre sudo update-alternatives --config java java -version // openjdk version "1.8..." 하지만 이렇게 한 뒤, ./gradlew clean build를 수행하면 또 에러가 날 수 있다. (왜냐면 나는 났기 때문!😞) Execution failed for task ':compileJava'. Could not find tools.jar. Please check that .. 그 경우에는 우..

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

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

    브라우저에서 google.com을 요청할 때 통신 과정이 어떻게 이루어질까?

    과정 1분 요약 1. 사용자가 웹 브라우저를 통해 google.com을 입력한다. 2. url 주소 중 도메인 네임 부분을 DNS 서버에 검색한다. 3. DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 url 정보와 함께 전달한다. 4. 브라우저는 HTTP 프로토콜을 사용하여 요청 메시지를 생성하고 HTTP 요청 메시지는 TCP/IP 프로토콜을 사용하여 서버로 전송한다. 5. 서버는 응답 메시지를 생성하여 다시 브라우저에게 데이터를 전송한다. 6. 브라우저는 응답을 받아 파싱하여 화면에 렌더링한다. 설명 2번 과정부터 설명해보자. 브라우저는 사용자가 입력한 google.com에 상응하는 ip 주소를 찾기 위해 dns 기록 캐시를 확인한다. DNS는 웹 사이트의 이름(URL)..

    AWS Bastion SSH-Keygen And Install ClamAV

    ssh-keygen -t rsa //명령 Generating public/private rsa key pair. Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): Enter passphrase (empty for no passphrase): 파일을 저장할 별도의 디렉토리를 입력하지 않으면 기본 디렉토리에 저장한다. passphrase는 키의 비밀번호로, 암호화되어 키 생성에 사용된다. 따라서 둘 다 따로 작성하지 않고 Enter 키를 이용하여 넘어가기만 해도 ssh-key가 제너레이트 된다! 또한 우분투에서 sudo freshclam 실행 시 다음과 같은 에러가 나올 때 해결 방법은 다음과 같다. WARNING: Ignoring depere..

    [우아한 테크코스 Level2 모의 면접 질문 및 답변 재정리 - 2]

    11. Equals + hashcode의 이유? Equals 메서드는 주소값이 다른 객체는 서로 다른 객체로 판단한다. Equals 메서드를 재정의하는 경우 같은 인스턴스 변수를 갖는 객체는 같다는 결과를 얻을 수 있다. Equals에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 객체의 hashCode 메서드는 항상 같은 값을 반환한다. 즉, equals가 같다고 판단했으면 hashCode 값은 항상 같다. 하지만 equals가 다르다고 판단했을 때에도 해시코드 값은 같을 수 있다. 또한 같은 값을 가진 객체가 서로 다른 해시값을 갖게 될 수도 있으므로 꼭 재정의해주어야한다. 12. 상태패턴 사용한 방법? (내용 보충하기) 특정 상태에 따라 결과값이 나뉘는 경우 상태패턴을 사용하였다...

    [Digging into] Spring Security 세션과 쿠키

    보호되어 있는 글입니다.

    [우아한 테크코스 Level2 모의 면접 질문 및 답변 재정리 - 1]

    모의면접에서 받았던 질문에 대한 답을 다시 정리해보려고 합니다. 1. 추상화 vs 캡슐화 캡슐화: 객체가 내부적으로 어떻게 구현되어있는 지 감추는 것 (숨기는 것) 추상화: 클래스 구현 세부 사항과 동작을 분리하는 것. 2. 숨기면 다 캡슐화가 되나? 지금 생각해보면 이 질문에 대한 대답은 no라고 생각된다. 그 이유는, 숨기기만 하고 외부에서 숨긴 데이터 조작이 가능하다면, 그것은 진정한 캡슐화라고 할 수 없기 때문이다. 우선, 캡슐화를 하는 목적은 객체의 내부 구현을 감추어 내부 구현의 변화가 일어나더라도 협력하는 외부 객체에 변화의 영향이 퍼져나가지 않도록 막기 위함이다. 앞서 말한 것처럼 숨기기만 하고 getter를 통해 데이터를 넘겨주고, 심지어 넘겨받은 데이터를 외부에서 조작 및 변경이 가능하..

    Java는 Call By Reference일까, Call By Value일까?

    감사하게도 우테코 크루 검프께서 많은 레퍼런스를 주셔서 글을 더 다듬었습니다 😉 오늘은, 우테코에서 재밌게 토론했던 주제인 Java는 Call By Reference일까, Call By Value일까에 대해 다루어보고자 한다. 우선, 함수의 호출 방식에는 두 가지가 있다. 첫번째는 Call By Value(값에 의한 호출)이다. 이 방식은 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역 변수의 특성을 가진다. 따라서 함수 안에서 인자의 값이 변경되어도, 외부에는 영향을 끼치지 않는다. 두번째는 Call By Reference(참조에 의한 호출)이다. 이 방식은 인자로 받은 값의 주소를 참조하여 처리한다. (인자로 전달되는 변수의 레퍼런스를 전달한다.)..

    이벤트 소싱이란?

    도입 이번에 우아한 테크코스에서 체스를 구현하는 미션을 진행했었는데, 체스를 DB에 저장하고 게임을 진행할 수 있도록 하는 기능이 요구사항에 있었다. 관건은 체스 게임을 어떻게 DB에 저장하는가? 였는데, 나는 이벤트 소싱이라는 방법을 이용하였다. 하지만 막상 이벤트 소싱이 어떠한 장단점을 갖는지에 대해 알지 못한 채 사용하여서, 이번에 한번 정리해보고자 한다. 이벤트 소싱이란? 이벤트 소싱은 데이터 저장 방법에 대한 것이다. 로직을 처리할 때 일반적으로 결과값을 저장한다. 하지만 그와 달리, 이벤트 소싱은 순차적으로 발생하는 이벤트를 모두 저장한다. 또한 이벤트 소싱 방식은 도메인의 이벤트를 기록하기 때문에 갱신이나 삭제 연산은 수행되지 않는다. 도메인 모델 데이터베이스에는 최종 상태가 아닌, 그동안 ..