Error Record 15

ConcurrentModificationException이 발생하지 않는 경우

이펙티브 자바 Item 58에서는 for-each를 사용을 추천한다. 하지만 for-each를 사용할 수 없는 부분을 명시하고 있었다. for-each에서는 컬렉션의 원소를 수정할 수 없다고 한다. 이 또한 코딩테스트에서 나도 경험했던 부분이다. 그런데 스터디원이 자세한 예시를 요구하여, 코드를 작성했는데.. 어머나..?? 갑자기 삭제가 되는 것이다. 코드는 아래와 같다. 그런데 놀랍게도 예상하는 결과가 나왔다. 이펙티브 자바의 말에 의하면, 그리고 여러 사람들의 글에 의하면 이것은 불가능했어야했다. 처음에는 래퍼 클래스와 기본타입은 가능한가..?? 라는 생각도 했었지만, 너무 자기합리화로 끝내는 것 같아서 조금 더 정확하게 파고들고 싶었다.(개발자의 본성이랄까 ㅋㅅㅋ) 우선은 remove의 원리를 알고..

Error Record 2024.04.09

[Makefile] 오류, *** 분리 기호가 빠졌음. 멈춤 해결 방법

문제 Makefile 작성 후 make를 하는 과정에서 아래와 같은 오류가 나왔다. [Makefile] 오류, *** 분리 기호가 빠졌음. 멈춤 해결 방법 해결 아니 분명 탭도 잘 지켰고, 오타도 없는데 무엇이 문제일까.. 고민해보았는데, Makefile에서 탭을 쓰면 빨간 색으로 처리되는 것이 살짝 신경쓰여서 혹시 몰라 vim이나 vi의 tab이 잘 적용됐나 확인했는데,,, 탭이 자동으로 공백 4개로 바뀌었다. 해결방법은 이렇다. 원하는 Makefile에서 아래의 두 명령어를 입력하자. :set noexpandtab :retab! 이러고 :wq로 Makefile을 저장 후 다시 make해주면 해결된다.

Error Record 2023.12.05

The designated data directory /var/lib/mysql/ is unusable.

문제 도커라이징한 mysql 컨테이너가 실행되지 않고 아래 에러를 뱉으며 계속 종료되었다. --initialize specified but the data directory has files in it. Aborting. The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it. Aborting 해결 여러가지 해결 책이 있어 도전해보았지만, 나는 하단의 링크에서 제시한 방법으로 해결하였다. 아마 캐시 데이터가 너무 많아서 실행이 안됐나...?? 싶었다. docker system prune --volumes 해당 코드로 약 36GB(ㄷㄷ..)가 정리되고 정상 실행됐..

Error Record 2023.11.16

AttributeError: Can't get attribute

문제 졸업 프로젝트에서 노래와 광고를 분류하기 위해 텍스트 기반 분류기를 구현 중이다. 진행하다가 아래와 같은 오류를 만났다. 해결 찾아보니, 멀티 프로세싱..? 관련 문제라고 한다. 오류가 발생한 코드는 아래와 같은데 train_loader = DataLoader(train_data, batch_size=8, shuffle=True, num_workers=8) test_loader = DataLoader(test_data, batch_size=8, shuffle=True, num_workers=8) 여기서 num_workers 부분에서 오류가 나는 것이었다. 아래와 같이 간단히 오류가 나는 부분을 '제거'하고 다시 실행해보니 문제 없이 작동했다. train_loader = DataLoader(train..

Error Record 2023.09.08

MySQL Workbench 튕김 현상 해결

문제 MySQL Worckbench에서 데이터를 조회하려고 하면 계속 튕겼다. 데이터 여러개가 들어가있는 것도 아닌데 왜이러는지.. 해결 MySQL Worckbench 버전을 바꿔주면 된다. 아래의 링크에서 버전 8.0.31을 다운받자. https://downloads.mysql.com/archives/workbench/ MySQL :: Download MySQL Workbench (Archived Versions) Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Workbench, please visit MySQ..

Error Record 2023.08.30

mysql error code: 1146. Table 'sys.*' doesn't exist

문제 MySQL workbench에서 테이블의 데이터를 조회하기 위해서 쿼리문을 작성했는데, 다음과 같은 오류가 떴다. mysql error code: 1146. Table 'sys.*' doesn't exist 해결 간단하다. 쿼리문 실행 이전에, 내가 사용할 데이터베이스 이름을 지정해주면 된다. 예를 들면 아래와 같다. use mydatabase; select * from menu; 데이터베이스를 지정 안하고 쿼리문을 작성하는 나는 하수...

Error Record 2023.08.30

java.sql.SQLException: Access denied for user

문제 Docker에서 MySQL을 받아와서, 내 프로젝트랑 같이 docker-compose.yml에 작성한 후에 실행시키니 아래와 같은 오류가 발생했다. java.sql.SQLException: Access denied for user 'username'@'~' (using password: YES) 해결 MySQL의 관리자 계정으로 사용자에게 접근 권한을 부여해야한다. 만약 도커로 MySQL을 다운했다면, 도커 허브에서 그렇지 않다면 MySQL bash에서 바로 진행할 수 있다. 우선 관리자 계정으로 mysql에 접속하자. mysql -u root -p 이후 패스워드를 입력한다. 이후, 관리자 계정으로 접근 권한을 부여하기 위해 아래와 같은 명령어를 실행하자. CREATE USER 'new_user'@..

Error Record 2023.08.30

no main manifest attribute, in *.jar

문제 스프링 프로젝트를 진행하다가, 클라우드에 띄우기 위해서 도커파일을 작성해야했다. 도커파일을 작성하기 위해 자바에서는 .jar 파일이 필요했고, 나는 처음에 gradle의 jar 를 실행했다. build/libs/ 에 .jar 파일이 생기긴했지만, plain.jar 형태였다. 그냥 그 jar 파일을 커맨드에서 java -jar *.jar 로 실행했더니 아래와 같은 오류가 떴다. No main manifest attribute, in *.jar 해결 plain.jar에는 Main 클래스에 대한 정보가 담겨있지 않아서 이러한 오류가 난다고 한다. 따라서 우리는 ~plain.jar 파일이 아닌 ~.jar 파일을 생성해야한다. 방법은 간단하다, gradle에서 bootJar를 실행시켜주면 된다. 이 Grad..

Error Record 2023.08.30

ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?

문제 졸업 프로젝트에서, 도커 이미지가 너무 무거워 경량화 작업을 실시했다. 파이썬 이미지를 사용하고 있었는데, buster에서 slim-buster로 변경하였고, 다시 빌드하는 과정에서 아래와 같은 오류를 만났다. 해결 slim-buster는 경량화를 위해서 git이 설치되어 있지 않을 수 있다. 따라서 아래와 같은 명령어를 git을 통해 설치하기 전에 작성해주자. RUN apt-get update && apt-get install -y git

Error Record 2023.08.08