오늘의 기록
![[Docker] 도커 입문](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba7en0%2FbtrFQYow5vZ%2FwQyCunAC9xvB1qb5T4YI6K%2Fimg.png)
[Docker] 도커 입문
도커 소개 어떤 애플리케이션을 만들기 위해서 여러 프로그램을 설치하고 환경에 맞게 설정하는 것은 여간 까다로운 일이 아니다. 대부분 한 번에 될 턱이 없다. 한 번에 돼도 개발자들은 왜 한 번에 되는지 의심한다… 따라서 누군가가 컴퓨터에 애플리케이션을 깔아주고 이를 제공해준다면 얼마나 편리할까? 그러나 애플리케이션 하나를 위해 여러 컴퓨터를 사야하는 것은 너무 비싸다. 그렇다면 하나의 컴퓨터에 여러 가상의 컴퓨터(OS)를 깔고, 각각에 애플리케이션에 필요한 프로그램을 설치한다면? 여러 컴퓨터를 살 필요는 없지만, 애플리케이션 하나 설치하기 위해서 용량이 큰 운영체제를 깔아야 한다는 것은 부담스럽다. 또 여러 운영체제가 있다보니까 실행속도도 느려지게 된다. 그래서 생각해낸 것이 바로 컨테이너 기술이다. 그..
![[Google Colab] Github에 push 하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPwiO2%2FbtrCDJth5bj%2FkCMwu1uT7Tqnro1vpp3pA0%2Fimg.png)
[Google Colab] Github에 push 하기
Google Colab의 프로젝트가 점점 커셔 따로 원격 저장소에 보관할 필요를 느꼈다. Google Colab과 Github를 연동해 push하는 방법을 알아보자. 1. github에 새로운 레포지토리 생성 2. Push 하고 싶은 디렉토리에서 commit 용도의 colab 하나 생성하기 깃허브에 push 하고 싶은 디렉토리에 들어간다. 아래와 같이 project.ipynb를 깃허브에 push 하고 싶다고 하자. 다음은 commit 용도의 colab을 하나 생성해야 한다. 마치 터미널에서 git push 등을 했던 것처럼 commit 등의 git 명령을 입력해줄 용도의 colab이다. 여기서는 colab 파일 명을 for_git_commit.ipynb 으로 했다. 파일명은 아무거나 상관없다. 3. .g..
[Python] 음수 나누기 - / 연산자, // 연산자
파이썬에서 나누기 연산자로 몫을 구하고자 할 때는 다음과 같이 두 경우를 생각할 수 있다. print(10//3) print(int(10/3)) # 결과 3 3 양수끼리 나누면 두 경우 모두 같지만 음수 나누기를 하면 두 값은 달라진다. print(-10//3) print(int(-10/3)) # 결과 -4 -3 -10 나누기 3은 -3.3333... 이다. // 연산자는 나누기 결과보다 작은 정수 중 가장 큰 정수인 -4를, int() 연산자는 그냥 소수 부분을 버려서 -3을 결과로 갖는다. 알고리즘을 풀다가 우연히 발견했다.
[Java] 메서드 애노테이션 정보 가져오기
다음과 같은 애노테이션이 있다고 가정하자. @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface TestAnnotation { String value(); } 다음과 같이 메서드에 선언되어 있는 애노테이션의 정보를 가져올 수 있다. public class Test { @TestAnnotation(value = "test") public void test() { } public static void main(String[] args) throws NoSuchMethodException { Method method = new Test().getClass().getMethod("test"); TestAnnotation..
[Java] 현재 실행 중인 메서드 이름 가져오기
public class Test { public static void main(String[] args) { String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); System.out.println("methodName = " + methodName); } } methodName = main
![[AWS] CloudWatch logs - 로그 파일 수집](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frs2Z0%2Fbtrro5Hvvj4%2F8AVOkuBKkZV7uL85vnVDc1%2Fimg.png)
[AWS] CloudWatch logs - 로그 파일 수집
AWS EC2에서 발생하는 로그 파일을 확인하기 위해 매번 인스턴스에 직접 들어가서 로그파일을 확인하는 작업은 번거롭다. 따라서 CloudWatch Agent를 이용해 파일 로그를 CloudWatch에 출력하는 방법을 알아보자. CloudWatch agent 설치 CloudWatch agent는 CloudWatch에서 기본적으로 제공하는 cpu 사용률 등 기본적인 지표 외에도 메모리와 디스크 사용률 등 다양한 custom 지표를 확인할 수 있다. IAM 역할 설정 CloudWatchAgentServerPolicy 정책을 원하는 EC2 인스턴스에 적용한다. CloudWatch agent 설치 설치 방법은 ubuntu 기준이다. wget https://s3.amazonaws.com/amazoncloudwat..
[Python] 비트 연산자
비트 연산자 비트 연산자 a = 0b1010, b = 0b0100 & AND a & b -> 0b0000 | OR a | b -> 0b1110 ^ XOR a ^ b -> 0b1110 ~ NOT ~a -> 0b0101 오른쪽 Shift a >> n -> a * 2^-n 비트 연산자 응용 나누기, 나머지 연산 흔히 쓰이는 /, % 연산자는 오버헤드가 크기 때문에 필요한 경우 더 빠른 비트 연산을 사용할 수 있다. 나누는 수가 2^n인 경우 >> 연산자가 / 연산자를 대체할 수 있다. ex) 9 / 8 = 1 -> 9 >> 3 = 1 나누는 수가 2^n인 경우 & 연산자를 활용해 % 연산자를 대체할 수 있다. 2^n 꼴의 숫자를 이진수로 표현하면 최상위 비트만 1인 형태를 띄게 되고, 2^n에 -1을 더하면 ..
![[AWS] EC2, ufw enable 후 ssh 접속 불가 문제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgPf4u%2FbtrqxSYgFff%2FFtt3myZltSkGD9Qlq0XCXK%2Fimg.png)
[AWS] EC2, ufw enable 후 ssh 접속 불가 문제
Ubuntu는 기본 방화벽으로 ufw를 사용한다. 이 때, ufw를 disable 했다가 enable 했을 때, ssh 접속이 다시 되지 않는 경우가 있다. 사실 무시하고 넘어갔겠지만 ufw를 enable 할 때, ssh 접속이 끊어질 수 있다는 메시지에 y라고 응답했을 것이다. Command may disrupt existing ssh connections. Proceed with operation (y|n)? Firewall is active and enabled on system startup 이후 EC2를 다시 ssh로 접속해보면 타임아웃 에러가 나면서 접속할 수 없게 된다. ssh: connect to host x.x.x.x port 22: Operation timed out 이에 대한 해결 방..