백엔드(7)
-
[ Golang ] 인터페이스와 제네릭
인터페이스인터페이스는 Go에서 메서드 집합을 정의한 것으로, 해당 메서드를 구현한 모든 타입과 호환될 수 있다.인터페이스의 구현type TestInterface interface { save(string) // 리턴타입이 없는 경우 get() // 리턴타입, 파라미터 모두 있는 경우 put() // 리턴타입, 파라미터 모두 없는 경우 } Go 인터페이스는 Go에서 객체지향을 구현하는 방법으로, 인터페이스를 embed 해 사용한다.다양한 타입이 같은 인터페이스를 구현함으로써, 해당 인터페이스를 매개변수로 받는 함수는 여러 타입과 호환될 수 있다 GenericGo 1.18에서 도입된 제네릭은 여러 타입에서 동작할 수 있는 일반화된 함수와 데이터 구조를 작성하는 방법이다.package mainimpor..
2024.09.11 -
[ 모듈 시스템 ] go는 export 가 없습니다
// /pkg/utils/file1.gopackage utilsimport "fmt"func PublicFunction() { fmt.Println("첫번째 함수")}결론결론부터 말하면 Go 언어는 다른 언어들과 달리 export 키워드가 존재하지 않는다. 즉, 다른 패키지에서 사용할 수 있는 함수나 변수를 지정하는 별도의 키워드 없이, 대소문자만으로 공개 여부를 결정한다. 설명Go에서는 모든 코드가 패키지 단위로 관리되며, 패키지 간 의존성은 모듈 시스템을 통해 관리된다. 패키지는 독립적으로 존재하지만, 필요에 따라 다른 패키지의 요소를 사용할 수 있다. Go의 중요한 점은 대소문자 규칙을 통해 접근 가능 여부를 결정한다는 것이다. 첫 글자가 대문자인 식별자는 패키지 외부에서 접근할 수 있는 공개..
2024.09.10 -
[ Golang ] 배열 값 이해
Go는 기본적으로 참조가 아닌 값으로 동작하고, 배열에서도 마찬가지이다. 즉, 새 변수에 배열을 할당하면 배열을 복사하고 배열에 포함한 값을 복사한다.Go works with values rather than references by default, and this is also true for arrays. That is, when you assign an array to a new variable, it copies the array and the values it contains. 배열의 참조를 생성하기 위해서는 포인터를 사용할 수 있다.To create a reference to an array, you can use pointers.package mainimport "fmt"func main()..
2024.06.14 -
신규 웹사이트 SSL 설정 하는법
Certbot 설정 sudo certbot certonly --nginx -d '사이트주소' nginx conf 만들기 server { server_name 서버이름(도메인); # managed by Certbot location / { proxy_pass 포워드 시킬곳; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'u..
2024.01.08 -
[Volume , Bind mount] 데이터 영구적으로 보관하기
개인 공부용 메모 입니다. Docker는 Image 기반으로 동작하고, Image 는 읽기 전용이기 때문에 변경할 수 없다 (스냅샷 상태로 항상 유지됨). 이미지를 기반으로 생성한 컨테이너가 종료됨과 동시에 컨테이너 내부에 저장됬던 데이터는 사라지고, 새로 컨테이너를 생성할때는 Image 를 기반으로 컨테이너를 생성하므로 데이터를 영구히 보관할 수 없다 이를 해결해주는 개념이 Volume과 Bind mount 이다. Volumn 은 Docker 엔진에서 관리하는 저장공간이며, Docker CLI 등으로 접근이 가능하다 Bind Mount 는 호스트머신 (내 컴퓨터)의 파일시스템을 따르기 때문에 Docker 에서 파일을 관리할 수 없으며, 이로인해 중요한 데이터가 삭제될 가능성 또한 존재한다. 볼륨의 종류..
2023.10.28 -
[Express.js] 바쁜데 말시키는 사람이 싫어 - Api Limiter 를 사용해보자
백엔드공부를 하면서 자연히 신경써야 한다고 느낀 것이 안정적으로 서버를 운영하는 것이다. 분명 백엔드 현업을 경험해본 적이 없기에 신경쓰지 못한 부분들이 있겠지만, 천천히 적응해가면서 안정적으로 서버를 운영해보고싶다. https://jobkaehenry.tistory.com/54 [Freeda] 스쿠버/프리다이빙 로그북 작성 서비스 프리다는 회원가입 후, 웹상에서 다이빙 로그를 쉽게 관리할 수 있도록 도와주는 어플리케이션입니다. 자주 작성하는 값들이 미리 작성되어 있어 쉽게 작성할 수 있고, 버디 / 다이브샵 에서 작 jobkaehenry.tistory.com 개인프로젝트로 스쿠버/프리다이빙 로그북앱을 만들면서 문득 든 생각이있다. 나쁜 마음을 가진 해커가 악의적으로 대량의 트래픽을 유발해 서버를 망치려..
2023.03.15