개발공부(173)
-
[Java] main 메서드
main 메서드 Java를 처음 시작하면 클래스의 메서드를 실행시킬 때 main method를 사용합니다. 하지만 원리에 대해 오래 생각해본 적이 없다는 걸 최근에 발견했고 간단히 찾은 내용을 소개하려 합니다. Java main method는 Java 프로그램이 시작될 때 실행되는 포인트들입니다. 메서드 규약은 public static void main(String[] args)이며, Argument의 네이밍을 myStringArgs로 수정할 순 있어도 main이란 메서드명을 수정할 순 없습니다. 메서드를 하나하나 뜯어보면, public 접근 제어자는 java runtime 때 클래스 경로가 어디 패키지 내에 위치하든 실행할 수 있도록 접근 권한을 줍니다. static은 java runtime 때 클래스..
2022.01.15 -
[Java] Mac class
Javax.crypto.Mac 클래스 Mac class Javax Mac 클래스는 MAC(Message Authentication Code) 알고리즘 기능을 제공해줍니다. MAC은 서로 공유하는 secret key가 있을 때, 전송되는 정보의 유효성을 검증하고 요청에 대한 응답을 처리해주기 위해 사용됩니다. 따라서 MAC은 secret key를 기반으로 전송되는 데이터들에 대한 보안 기능을 한다고 볼 수 있습니다. MAC의 메커니즘은 암호화 해시기능에 기반하는데, 이러한 매커니즘을 HMAC이라고 합니다. HMAC은 어떤 해시기능 (e.g., SHA256, SHA384)과도 같이 사용하며, secret key와 조합해서 사용합니다. [위 내용은 아래 참고자료(Java docs)를 번역한 내용입니다.] 예제..
2022.01.13 -
[Spring] Collection 타입을 생성자 방식으로 주입하기
클래스 인스턴스가 초기화 될 때, A 인터페이스를 구현하는 Bean들을 List로 받고 싶다면 아래와 같은 코드를 사용하시면 됩니다. public class CollectionInject { //생성자 주입 방식에서 생성자를 의존주입 생성자 하나만 사용한다면 @Autowired가 생략가능 합니다. 그렇지 않고 다른 새성자도 사용할거라면 @Autowired로 명시해줘야 Spring이 어떤 생성자가 의존주입 생성자를 인지합니다. @Autowired //Spring은 InterfaceA를 구현한 Bean들을 모두 listOfImplementationA 리스트에 add 해줍니다. public CollectionInject(List listOfImplementationA) { for (InterfaceA inte..
2022.01.05 -
[IntroToDocker] JetBrains Intro to Docker[Part 2 Networking, Docker Compose]
JetBrains Intro to Docker[Part 2 Networking, Docker Compose] Web Application + Docker 웹 애플리케이션과 DB를 각각 Docker Container로 생성한 뒤 Docker compose를 활용해 서비스를 실행시켜 볼겁니다. Creating the DB Container docker pull mysql docker run --name app-db -d -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=myDB mysql M1 installing mysql Error M1 맥북은 docker pull mysql 명령어를 실행하면 ARM64를 지원하지 않기 때문에 오류가 발생합니다. 이때 docker p..
2022.01.03 -
[IntroToDocker] JetBrains Intro to Docker[Part 1 with Java Examples]
JetBrains Intro to Docker[Part 1 with Java Examples] 도커 컨테이너는 왜 필요할까요? A,B,C라는 팀원이 있는 스타트업이 있다고 해봅시다. A는 Java 8을, B는 Java 11을 사용할 때 매번 설정을 다시 해서 컴파일 실행해줘야 되는 번거로움이 발생합니다. 여기에 DB, AppServer(Apache, Openliberty...)가 추가된 Web App이라면 B는 AppServer, DB를 갖춰야 컴파일 실행할 수 있습니다. Java 버전 싱크로 맞춰야겠죠. 문제는 C,D,E... 더 많은 사람들이 실행할 필요가 있단 것입니다. 컨테이너는 뭔가요? 컨테이너는 App과 Dependencies를 패키지로 만들어 실행시켜주는 컴포넌트 입니다. 컨테이너들은 Shi..
2022.01.03 -
[Node.js] Node 17버전 node-sass 에러
Node 17 node-sass 에러 Vue에서 사용한 라이브러리를 위해 Node 버전을 17으로 업데이트 하고 빌드했을 때 sass가 없다는 에러가 발생했습니다. 해결은 14 버전으로 낮추는 방법으로 됐지만 원인을 파악해봤습니다. Stackoverflow에서도 npm install node-sass 라던지 rebuild 커맨드를 해결방법으로 제시해주고 있습니다. node-sass란? scss 파일을 미들웨어를 통해 css파일로 빠르게 컴파일 해주는 라이브러리 입니다. 왜 node 버전에 따라서 node-sass 에러가 날까? npm node-sass 문서를 보면 답이 나와있습니다. 사용빈도가 줄어서인지 Node 17 버전부턴 LibSass is Deprecated 되었기 때문입니다. 대체는 DartSa..
2021.11.15