전체 글 476

[LeetCode] LeetCode 1037. Valid Boomerang 솔루션 - python

꽤 쉬운문제라고 생각하고 풀었는데 생각치 못한 부분에서 막혀서 답지를 보고 푼 문제이다. 참고로 블로그에 기록해두는 이유는 답지를 보고 풀었는데 거기서 꽤 많은 점을 배울 수 있었기 때문이다. 아래는 문제 링크이다. 꽤 간단한 문제이다. https://leetcode.com/problems/valid-boomerang/ 자 그렇다면 내가 처음 접근한 오답을 먼저 보자. (이 코드 안봐도 된다. 아예 틀리기도 했고 너무 부실하다. ) class Solution: def isBoomerang(self, points: List[List[int]]) -> bool: points = sorted(points) last_point = points[-1][0] for i in range(1, 3): if points..

[LeetCode] LeetCode 961. N-Repeated Element in Size 2N Array 솔루션

이 문제는 어려운 문제가 아니다. 굉장히 쉬운 문제다. 그냥 지문 그대로 옮겨서 구현만 하면 되는 문제다. 그런데 문제를 풀어낸 솔루션에서 굉장히 재미난 동작을 발견했다. 파이썬 언어차원에서의 동작인것 같은데 처음에는 왜 이렇게 동작하나 의아했는데 꽤나 재밌다는 생각이 들어서 따로 뽑아서 블로그에 정리하고자 한다. 우선 문제 링크는 아래와 같다. 슥 봐도 쉬운 문제임을 알 수 있을 것이다. https://leetcode.com/problems/n-repeated-element-in-size-2n-array/ 그런데 중요한건 문제를 어떻게 풀었냐가 아니다. 문제를 풀어낸 과정에서의 코드 몇줄에서 발생한 신기한 동작이다. 내 솔루션은 아래와 같다. from collections import defaultdi..

기회와 선택

최근 들어서 많은 기회가 나를 찾아왔고 동시에 많은 기회에서 나의 능력이 부족했음을 느꼈다. 그럼에도 많은 기회들이 나에게 직접 고를 수 있는 기회를 주었다. 어떤 곳은 코딩 테스트에서 탈락했고 어떤 곳은 코딩테스트의 모든 문제를 다 풀었음에도 서류에서 탈락하여 면접조차 볼 기회가 없었다. 어떤 선택지이던 내게 미흡한 점이 많다는 점을 알려주었다. 그래도 코딩테스트를 오랜 기간 차근차근 준비해왔는데 이게 도움이 된건지 중간 난이도의 문제들은 쉽게 풀 수 있는 수준이 되었다. 붙고 떨어지고를 떠나서 내가 가고 싶은 곳이 어느정도 추려진 것 같다. 1. 기존의 대기업들 (돈 많이 주고 안정적인 큰 규모의 회사, 흔히 말하는 네카라쿠배, 삼성, SK 등등) 2. 새로운 도전을 하는 스타트업 (블록체인, 인공지..

생각들 2022.06.14

[Intellij] Abnormal build process termination Error with

오늘 갑자기 클라쪽에서 수정사항이 있어서 급하게 인텔리를 켜서 작업을 할려고 했는데 IntelliJ: Abnormal build process termination Error with 이와 같은 에러가 발생했다. 아예 Run이 작동하지 않았다. 딱봐도 인텔리 자체의 오류거나 내 윈도우에서 뭔가 이것저것 진행하면서 jdk 경로가 바뀌었거니 하고 생각하고 있었는데 다행히도 명쾌한 해결법을 찾아서 현재는 해결했다. 인텔리에서 File -> Project Structure -> Project Settings -> Project 여기까지 들어오면 아래와 같은 창이 나올 것이다. 여기서 Language level 만 바꿔주면 된다. 자이제 여기서 Language level 을 java 8 로 맞춰주면 된다. 나는 ..

개발툴 2022.06.06

[SpringBoot] X-AUTH-TOKEN 으로 보내지 않을 경우 JWT 로직은 에러가 난다.

어제 안드로이드 쪽을 맡고 있는 친구랑 API 요청을 맞춰보던 중에 자꾸 UserDetails 로 String conversion 이 일어나지 못했다는 classcast Exception 이 발생했다. 이상하다 싶었다. 분명 내가 postman 에서 테스트할때는 전혀 문제 없었는데 친구가 안드로이드쪽에서 요청을 보낼때만 에러가 발생했다. 그리고 그 근본 발생지도 시큐리티 코어쪽에서 로그가 찍혀있어서 잔뜩 겁을 먹고 있었다. (시큐리티 코어를 아직 잘 모른다. 아니 사실 거의 모른다... ) 이것 저것 해보다가 도저히 해결이 안되서 그냥 모든 지점마다 Breakpoint 마냥 전부다 Print 로 찍어보면서 정확히 어디가 문제인지 전부 찍어봤는데 확실히 문제가 되는 지점을 찾았고 거기서 뭔가 이상한 점을 ..

[SpringBoot] Swagger 사용할때 반드시 주의할 점!! - @ApiModel 의 value는 겹치면 안된다.

오늘 모처럼 빨간날이라 쉬던 와중에 같은 팀원으로부터 api 에 전달해야할 정보가 뭔가 이상하다는 카톡을 받았다. 급히 swagger api spec 에 접속해서 확인해보니 정말 뭔가 이상했다. api 명세를 보니 Dto 객체를 전달받아서 그 Dto 를 통해서 이것저것 작업을 수행해줘야 하는데 어째 api spec 에 명시된 필드들이 Dto에 있는 필드들보다 더 많은 필드들이 존재했다. 이 Dto에서는 이런 필드를 정의해준적이 없는데 어디서 나온 필드들일까? 하고 생각했다. 그런데 그 필드들은 어디선가 많이 본듯한 필드인 것을 직감했다. 먼저 결론부터 말하겠다. Swagger 어노테이션을 사용하면서 @ApiModel 라는 어노테이션에 해당 네임을 적어주는 기능이 존재한다. 그런데 만약 다른 도메인 객체 ..

[Leetcode] Leetcode 696 - count binary substring - python3

최근에 리트코드를 풀고 있는데 696 문제에서 막혀서 수십분 정도를 낭비했다. 이후에 discuss에 있는 솔루션 중 하나를 참고했는데 코드가 너무 이뻐서 올려둔다. class Solution(object): def countBinarySubstrings(self, s): """ :type s: str :rtype: int """ #Using the map function to find the combined length of 0 and 1 that are cut apart L = list(map(len, s.replace('01', '0 1').replace('10', '1 0').split(''))) #Because it is limited that only 0 and 1 can be next to ..

[Go] Go language 스터디 내용 정리

올해 초 겨울방학에 프로젝트에 지쳐서 숨돌릴겸 Rust와 Go 언어에 대해서 잠시 알아볼 시간을 가졌는데 그중 Go 언어는 노마드 코더님의 무료 강의를 보면서 notion에 내용을 정리했다. 4개월 정도 이전에 했던 스터디 내용이라 강의가 업데이트해서 강의내용이랑은 다른 내용이 있을 수도 있지만 내용 자체는 기본기 다지기에 좋을것 같아서 다시 보면 좋을 듯 싶어 업로드했다. go 언어란 무엇일까? 09년 구글의 로버트 그리즈머, 홉 파이크, 켄 톰슨이 개발했다. 고 루틴이 있다. → 멀티스레드 매커니즘이지만 자체적인 스케줄러에 의해 관리되는 경량 스레드이고 os에서 관리하는 경량 스레드보다 더 경량이다. 일급객체로 정수와 실수와 같은 데이터 타입과 동급으로 취급한다. channel을 통해 동시성을 지원한..

Go lang 2022.05.08

[Java] Java Future란 무엇일까?

Java의 개념 중 Future에 대해 알아보자. 아래 블로그에서 도움을 받았습니다. 감사합니다. https://codechacha.com/ko/java-future/ Java - Future 사용 방법 Future는 비동기적인 연산의 결과를 표현하는 클래스입니다. 즉, 멀티쓰레드 환경에서 처리된 어떤 데이터를 다른 쓰레드에게 전달하는 역할을 합니다. Future 내부적으로 Thread-Safe 하도록 구현되 codechacha.com

Java lang 2022.05.06

[Intellij] 인텔리제이 폴더 생성시 Flat 으로 생성될 경우

인텔리제이에서 폴더를 생성하는 와중에 폴더가 자꾸 . 을 기준으로 깊이들어가면서 생성되는 문제가 발생했다. 나는 그냥 수평으로 폴더를 추가해주고 싶었는데 그렇게 되지 않았다. 해결방법은 간단하다. project 창에서 마우스 오른쪽 클릭 -> Tree Appearance -> Compact Middle Packages 설정해제 이렇게 해주면 문제가 사라진다.

개발툴 2022.04.30

[CS] Gbps 와 GBps 의 차이

계산문제를 풀 일이 있어서 이것저것 풀어보는 중이었는데 도무지 안풀리는 문제에서 막혀서 거진 30분은 소비했다. 자꾸 말도 안되는 숫자가 나와서 뭔가 이상하다는 낌새를 느꼈다. 보통 숫자들은 딱 들어맞는데 계산결과가 틀어지는 이유는 십중팔구 단위에 있다고 생각했다. 내가 단위에 대해서 뭔가 실수했거나 단위 변환에 있어서 숫자를 틀렸거나 아니면 애초에 단위 변환 과정 자체에 오해가 있다는 생각을 하게 되었다. 그리고 이러한 고민들이 맞았다는 것을 곧 알게 되었다. Gbps 와 GBps 를 보자면 슬쩍 보면 정말 비슷하다. 별생각없이 그냥 풀면 틀리기 쉽다. Gbps 는 gigabit per second 이다. GBps 는 gigabyte per second 이다. 완전히 다른 내용이다. 아래 그림을 참고해..

개발 정보 2022.04.21

[C] 환경변수를 출력하는 envp의 미스터리한 동작 발견. 이유가 대체 뭘까요? <extern char ** environ;> (1)

야밤에 치킨을 먹고 쉬던 와중에 친구에게 연락이 왔다. 그리고 친구와 오랜만에 c 코드를 잠깐 살피게 되었다. 간단한 코드인데 어떻게 제출할지가 살짝 애매해서 고민하고 있었다. 방법을 찾으려고 이것 저것 건드려보면서 30분은 떠든것 같다. 그러다가 굉장히 납득하기 어려운 동작을 하는 코드가 탄생했다. 아무리 생각해도 이해가 가지 않는 동작이라 조금만 더 살펴볼까 한다. 분명 우리가 모르는 무언가가 있을 것이라고 생각하고 이리저리 살펴봤는데도 그럼에도 불구하고 신기한 코드이다. 이제부터 설명을 하도록 하겠다. 우선 우리의 목적은 간단하다. /usr/bin/env 는 환경변수를 모두 출력시키는 동작을 한다. 그리고 우리는 그 환경변수에 ENV1=value1, ENV2=value2 라는 path 또한 추가해서..

C & C++/C 2022.04.13

최근 근황 2022년 04

최근 그냥 저냥 지내고 있다. 바쁘게 보내고 있다. 뭔가 해답을 찾은것 같다. 이야기를 나눠보고 싶은 분이 계셨다. 생판 모르는 분이었는데 친분과는 별개로 생판 모르는 분이더라도 물어보고 싶은게 있었다. 용기를 내서 개인적인 연락처를 받아서 정말 많은 질문을 했다. 혹 무례하게 보이진 않았을까 걱정했는데 친절하게 답변을 해주셨다. 말씀이 큰 도움이 되었다. 거기서 뭔가 답을 찾았다. 비유하자면 내가 정한 답안이 오지선다안에는 있기는 한건지 확인한것 같은 느낌이다. 그조차도 큰 도움이 되었다. 언제나 핵심은 그럼에도 불구하고 스스로 잘 하는 것이다. 꾸준히 그리고 천천히 나아가는건데 비단 운동이나 학문이나 연습이나 기록이나 뭐가 되었든 미시적이든 거시적이든 모든 과정에는 꾸준히 그리고 천천히 걸어가는 사람..

생각들 2022.04.10

[Bouncy-Castle] 자바 암호화 라이브러리 Bouncy-Catsle 을 사용해보자.

spring boot 로 새로운 프로젝트를 진행하고 있다. (프로젝트 github주소: https://github.com/yuny0623/2Hash) 암복호화 api 들을 만들려고 하는 중인데 새로운 기능을 추가할까 싶어서 무얼할까 고민해보다가 .pem 파일로 key 들을 만들어서 사용자에게 주는건 어떨지 고민하고 있었다. (사실 지금 api 를 만든다는 것 자체가 모순적이긴 하다. 서버에서 제공한다는게 모순적이다. 클라이언트에서 직접 만들고 본인이 사용한다면야 믿고 쓸 수 있겠지만 서버에서 private key 를 만들어서 준다는 것 자체가 살짝 치명적인 단점이라는 생각이 든다. 어쨋든 일단은 학습 목적이라 만들어볼까 한다. ) pem 키와 관련된 라이브러리가 있는데 그게 바로 Bouncy - Cats..

Computer Security 2022.04.09

[RSA] javax.crypto.IllegalBlockSizeException: Data must not be longer than 245 bytes 에러 발생

데이터 교환을 암복호화를 써서 하는 api 를 개발중인데 갑자기 위와 같은 에러가 발생했다. (사실 금요일이라 뭔가 엉뚱한게 땡겼다. 그래서 뜬금없이 암복호화를 만들어보기로 했다. 근데 잘안된다. 완전 막힘. ) javax.crypto.IllegalBlockSizeException: Data must not be longer than 245 bytes 무슨 말이냐면 즉 Data 는 245 바이트보다 길어서는 안된다는 이야기다. 역시나 변환하려고 하는 데이터가 좀 길다 싶었는데 이런 에러가 터지게 되었다. 이렇게 놓고 보니까 에러가 안나는게 오히려 이상한것 같기도 하다. 해결방법은 간단하다. 그냥 공개키는 키 교환에만 사용하고 데이터는 대칭키를 사용해서 암복호화하는 것이 가장 좋을 것 같다. 즉 전자서명에..

Computer Security 2022.04.08

[Springboot & Intellij] 9.png 나인패치 이미지란? 9Patch image

springboot 어플리케이션을 작성 중에 신기한 걸 발견했다. 이미지들이 레포에 올라가지 않게 하기 위해서 gitignore에 이미지형식을 적어주고 있었는데 png 를 작성할때마다 자꾸 9.png 라는 양식으로 자동완성이 되었다. 그런데 9.png ? 들어본적도 없고 이런 이름을 자동완성을 시켜준다는게 상당히 이상하게 느껴졌다. 다른 의미있는 이름으로 자동완성시켜준다면 어디선가 쓰겠거니 하겠는데 9.png 라고 하는 의미없는 네이밍이 신기하게 느껴졌다. 그래서 검색해보니 아마 이게 맞을지는 모르겠지만 안드로이드에서 사용하는 나인패치 이미지와 연관성이 있을것이라고 결론내렸다. 이외에는 9.png 와 관련된게 딱히 없었다. (검색창에 springboot 나인패치 이미지 or springboot 9.png..

[AWS] EC2를 사용하지 않을 경우 Elastic Ip / 탄력적 ip에서 과금 발생

아침에 일어나서 메일을 확인하는데 AWS로부터 처음보는 내용의 이메일이 도착했다. 요금이 발생했다는 이메일이었다. 모두 프리티어를 사용하고 있는 중인데 왜 요금이 발생할까 싶어서 AWS에 로그인해봤다. 결제대시보드에 아래와 같은 청구서를 확인할 수 있었다. 프리티어를 사용중인데 요금이 발생했다니 의아했다. AWS로 들어가서 확인해보니 Elastic Ip 즉 탄력적 ip에서 요금이 발생하고 있었다. 왜 여기서 요금이 발생할까에 대한 궁금증이 생겼는데 순간 예전에 블로그에서 읽었던 내용이 스쳐지나갔다. (사실 위에 과금 고지문을 잘 보면 0.005 per elastic ip address not attached to running instance per hour 라는 문구를 확인할 수 있다. 즉 말 그대로 ..

Cloud/AWS 2022.04.08

[springboot]cannot deserialize from Object value (no delegate- or property-based Creator) 에러 발생

스프링 부트로 만든 어플리케이션을 테스트하던 도중에 cannot deserialize from Object value (no delegate- or property-based Creator) 라는 에러를 만났다. api 를 호출하면서 어떤 Dto를 전달해주는데 그 사이에서 형식이 맞지 않았던 혹은 전달이 잘못되었든 어딘가에 문제가 생겼을 것이라고 추측하였다. 해결방법은 아주 간단하다. 아래는 내가 api로 전달하고자 했던 Dto 이다. (해결한 모습이다.) 위와 같이 Dto를 선언해줌으로써 해결할 수 있었다. 원래 해결되기 이전에는 @NoArgsConstructor 어노테이션이 없었다. 왜 이 어노테이션이 없으면 에러가 발생할까? jackson library가 빈 생성자가 없는 모델을 생성할 줄 모르기 ..

[JPA사용중] TransactionRequiredException: Executing an update/delete query 에러 발생/ 트랜잭션이란?

굉장히 간단한 에러이다. 근데 로직이 틀린게 아닌데 왜 에러가 날까 싶을거다. update나 delete 구문을 실행할때 @Transactional 어노테이션을 달아주지 않으면 발생하게 되는 에러이다. 이렇게 @Transactional 을 달아주면 에러가 나지 않는다. @Transactional 이 하는 기능도 굉장히 직관적인데 디비를 공부했다면 트랜잭션이 무엇인지 알것이다. 기억을 더듬어보자. @Transactional 은 이 어노테이션이 붙은 메서드의 경우 메서드가 포함하고 있는 작업 중에 하나라도 실패할 경우 전체 작업을 취소한다는 뜻이다. 전체 작업을 취소한다? 데이터베이스를 배웠다면 기억이 날텐데, 우리가 B라는 사람에게 돈을 보냈는데 갑자기 중간에 은행이 번개를 맞아서(ㅋㅋ) 실제로 내가 보낸..

[Pythone] Python3 Memory Error 발생 - 파이썬 메모리 에러 발생

leetcode에서 문제를 풀고 있는데 이런 에러를 만났다. 메모리 에러라고 한다. 사실 이런 에러는 오늘 처음 만났다. MemoryError 라는게 있었는지도 몰랐는데 오늘 발생하고 나서야 이런게 있다는 것을 알게 되었다. 다이나믹프로그래밍을 짜면서 dp 테이블을 굉장히 크게 만들어줘서 발생한 에러인데 실제로는 처음 봤다. 물론 풀이 방법을 달리해야 하는 것은 당연하지만 이 Memory Error 라는 것이 실제로 다른 곳에서 발생했을 경우 대처하는 방법에 대해서 알아보자. 일반적인 대처방법: 1. 그냥 다시 실행해보자. 때에 따라서 매모리 에러의 경우 그냥 다시 실행하면 잘되는 경우가 있다고 한다. 2. 배치 사이즈를 줄인다. (이건 딥러닝을 사용할 경우를 말하는거다.) 순간적으로 많은 데이터를 처리..

[SpringBoot] 퍼블릭 IPv4 주소로 ec2에 연결시 connection timed out 발생할 경우

가끔 만들어놓은 ec2에 스프링부트를 띄워놓고 퍼블릭 ipv4 주소로 접근해서 잘 뜨는지 확인하려고 할경우 아무리 접속해도 connection timed out 이 발생하는 경우가 있다. 스프링부트 어플리케이션은 잘만 돌아가고 있는데도 왜 이렇게 접속이 안되는걸까? 성급하게 ec2를 만들고 빨리 테스트해보고 싶어서 이것저것 놓치면 발생하는 문제다. 보안 그룹에서 인바운드 규칙에 8080포트를 안열어놨을 가능성이 크다. SSH 연결하려고 22포트만 열어놓고 RDS 연결한다고 3306만 열어놓고 나머진 열어놓지 않아서 발생하는 문제이다. 꼼꼼히 살피고 HTTP, HTTPS, 혹은 8080포트를 열어놓자. https://bcp0109.tistory.com/356 AWS 1편: EC2 생성 후 Spring Bo..

[SpringBoot] hikaripool-1-Starting... stuck 문제 - hikaripool 에서 멈출 경우 대응방법

새롭게 진행하는 프로젝트에서 ec2를 만들어서 rds랑 연결하는 작업을 하고 있는데 스프링 부트 어플리케이션을 실행하면 hikaripool starting... 에서 무한정 대기하는 현상을 발견했다. 로컬에서 rds 에 연결했을때도 잘 연결됬는데 ec2 상에서 문제가 발생하는 것을 보고 인터넷을 한참 뒤졌다. 관련된 자료로는 hikari의 경우 특정 버전, 예를 들면 window 와 특정 oracle jdk 버전(18>이후)에서 고질적인 문제를 겪는다고 한다. 관련된 github 이슈가 딱 하나 있었는데 대화가 상당히 진행되며 이야기한 것의 요약을 해보면 위 환경에서 이유없이 그냥 stuck 되는 경우가 있었다고 한다. (이것때문에 고민하신 분들이 꽤 많았다. 하지만 내 문제와는 살짝 결이 다른 이슈인것..

[BOJ] 백준 11060 점프점프 - 파이썬

실버 2로 랭크되어있는 백준 11060 점프점프 문제이다. 원래 문제풀이는 검색하면 바로 나오기 때문에 필요성을 느끼지 못해서 블로그에 문제풀이 관련 포스팅을 따로 하지 않는데 이 문제의 경우는 좀 아쉬웠다. 메모리 초과로 풀지 못해서 답답한 감이 있어서 포스팅을 하게 되었다. (이 문제는 dp로 풀어내는 방법도 있다고 한다. 처음부터 bfs로 접근했기 때문에 더 아쉬웠다는 생각이 들지만 어차피 어떤 방법으로 접근하든 풀어내는 사람은 문제없이 잘 풀어내기에 단념하고 다른 분들 코드를 읽어보고 있다. ) from collections import deque import sys input = sys.stdin.readline n = int(input()) # 1이라면 시작과 동시에 종료 if n == 1: ..

[Intellij] Intellij 유용한 단축키

디렉터리, 패키지, 클래스 등 생성 목록 보기 alt + insert 라인 복제 ctrl + d 라인 삭제 ctrl + y 문법에 관계없이 라인 이동 alt + shift +(키보드 위아래) 구문 안에서만 라인 이동 (메서드 벗어날 수 없음) ctrl + shift + (키보드 위아래) element 단위로 옮기기 ctrl + alt + shift + doc 즉시 보기 ctrl + q 단어별 이동 ctrl + 단어별 선택 ctrl + shift + 라인 첫끝 이동 home, end 라인 전체 선택 shift + home, end 전체에서 검색 ctrl + shift + f 파일 검색 ctrl + shift + n 최근 열었던 파일 ctrl + e 출처는 아래와 같습니다. 감사합니다. https://gml..

개발툴 2022.03.24

[Python3] 코딩테스트 파이썬 사용시 유일한 단점 - 파이썬의 객체 복사 방식(깊은 복사와 얕은 복사)

간만에 알고리즘 문제가 잘 풀린다 했더니 말도 안되는 에러가 발생해서 거의 1시간을 이것저것 만져보면서 고민했던것같다. 도대체 왜 안되는건지? 이 고민을 아무리 해봤는데도 이상할게 전혀 없는 코드인데 원하는 대로 동작하지 않았다. 한참을 코드를 들여다보다가 아차 싶은게 떠올랐다. 객체를 복사하는 과정이 굉장히 많았는데 이 부분에서 에러가 발생했던 것이었다. (한 변수를 사용하면서 그 값에다가 여러 변화를 주면서 사용했다. 이게 문제였다.) 이전에도 인지하고 있었던 내용이었지만 유독 오늘 만난 문제에서 실수를 했던 것이었다. (알고 있는 것과 실천하는 것은 다르다.) 파이썬이 모든 면에서 굉장히 편하고 알고리즘 문제를 풀기에 딱 좋은 언어라는 생각이 들었다. 너무 편하다. 문자열도 깔끔하게 풀어낼 수 있고..

[VSCode] VSCode java 환경 세팅하기 - visual studio code java setting

요즘 심심할때마다 알고리즘 문제를 하나씩 풀어보고 있는 중인데 자바로도 풀어볼까하는 생각이 들었다. 원래는 파이썬으로 잘 풀고 있었다. 저번에 c++로 풀어봤었는데 당최 c++ 기억이 가물가물해서 자잘한 문법에서 요리조리 검색하면서 풀다보니 배보다 배꼽이 커서 파이썬으로 빠르게 푸는 중이다. 그러니 vscode에 자바 세팅을 해보자. 인텔리제이를 써도 되긴 하지만 굳이 프로젝트를 거창하게 세팅할게 아니라 딱 한 파일에만 코드짜고 돌려보고 디버깅해보고 제출할거라서 vscode 로 자바 개발환경을 잡아주고 가볍게 쓰는게 낫겠다 싶었다. 방법은 간단하다. 일단 다들 jdk 는 깔려있을거라고 가정한다. vscode에 extension pack for java를 설치해준다. 설치됬으면 file -> prefere..

개발툴 2022.03.19
반응형