제네릭이 뭔데?
제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 라이브러리를 보다 보면 제네릭을 사용한 코드를 많이 볼 수 있다.
1 | public class Box<T> { |
위 코드는 Box라는 클래스를 정의한 것이다. Box 클래스는 제네릭을 사용하여 Box 클래스를 생성할 때 사용할 데이터 타입을 외부에서 지정할 수 있다. Box 클래스를 사용하는 방법은 다음과 같다.
제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 라이브러리를 보다 보면 제네릭을 사용한 코드를 많이 볼 수 있다.
1 | public class Box<T> { |
위 코드는 Box라는 클래스를 정의한 것이다. Box 클래스는 제네릭을 사용하여 Box 클래스를 생성할 때 사용할 데이터 타입을 외부에서 지정할 수 있다. Box 클래스를 사용하는 방법은 다음과 같다.
이대 서버에 있는 vscode가 고장났다. 다시 깔고, 모든 파일을 지워도 돌아오지 않았다. vscode가 고장나면 문제가 무엇이냐하면, remote-SSH
확장 프로그램을 사용하지 못한다는 것이다. 이는 code-server를 사용할 수 없다는 뜻이고, 그래서 로컬로 코드를 작성하고 git을 통해서 올리거나 vim로 코드를 편집해야 한다.
원래 정상적인(?) 프로젝트라면 문제가 되지 않는다. 왜냐하면 로컬에서 코드를 작성하고, git을 통해서 올리는 것이 일반적이기 때문이다. 하지만 이 프로젝트는 그러지 않았기 때문에 문제가 발생했다. 서버에 직접 접근해서 코드를 작성하고, 실행해 왔기 때문이다. 그래서 서버에 code-server
로 접근하지 못하는 것은 큰 문제였다.
그래서 다른 개발자들에게 모두 환경세팅을 해주거나 vim을 사용해서 코드를 작성해야 하는데, 당연히 그럴 수 없다. 어떻게든 해결책을 찾아야 했다.
도커 이미지를 배포할 때, 대표적으로 Docker Hub를 사용한다. 하지만 Docker Hub는 무료 계정의 경우, 1개의 private repository만 사용할 수 있다. public으로 사용할 수 있는데, 민감한 정보가 포함된 이미지를 올리기에는 부적합하다. 그래서 GitHub Container Registry를 사용해보기로 했다.
GHCR은 GitHub에서 제공하는 Docker 이미지 저장소이다. GitHub의 레포지토리와 연동되어 있어서, 이미지를 레포지토리와 함께 관리할 수 있다. 무료 계정에서도 500MB GitHub Packages
가 허용되는 범위 내에서 퍼블릭/프라이빗을 무제한으로 사용할 수 있다.