New

  • RDS :: Too many connections 오류 해결 (mariaDB)

    RDS :: Too many connections 오류 해결 (mariaDB)

    문제상황 스프링 서버를 도커 컨테이너로 실행했는데 갑자기 Too many connections 에러 발생..! DB 는 AWS RDS 로 mariadb (t3.micro) 를 사용 중이다. 세팅 확인 현재 연결되어 있는 thread 수와 지정된 wait timeout 값, max connections 값을 확인해보자. 연결된 thread 수 확인 SHOW STATUS LIKE ‘threads_connected’; 현재 wait timeout 값 확인 SHOW VARIABLES LIKE ‘wait_timeout’; 현재 max connections 값 확인 SHOW VARIABLES LIKE ‘max_connections’; 확인해보니 max connections 값이 30 으로 되어 있는데, 연결된 th..

  • RDS :: Incorrect string value: '\xEC\x9D\xB4\xEC\xA3\xBC...' for column 오류 해결 (mariaDB)

    RDS :: Incorrect string value: '\xEC\x9D\xB4\xEC\xA3\xBC...' for column 오류 해결 (mariaDB)

    문제상황 카카오 로그인 이후 받아온 nickname 값을 DB 에 저장하려고 했는데 Incorrect string value 에러가 떴다. 검색해보니 클라이언트에서 보낸 데이터를 DB 에 넣으려 할 때, 그 데이터가 한글이면 오류인 것으로 문제를 파악할 수 있었다 ! DB 의 character set 을 utf-8 로 설정하면 바로 해결되는 문제. 해결방안 RDS 의 파라미터 그룹을 수정해준다. 만약 RDS에 default 파라미터 그룹이 적용되어 있다면 파라미터 그룹을 새로 만들면 된다. 파라미터 그룹에서 character 를 검색해보자. 검색해서 나오는 character_set 들의 값을 전부 utf8mb4 로 바꿔주자. utf8 로만 변경해도 되지만, 이모지와 같은 값들을 DB 에 넣고 싶다면 mb..

  • 알고리즘 스터디 :: 입출력 (Java, Python)

    알고리즘 스터디 :: 입출력 (Java, Python)

    백준 기준으로 입출력을 연습해볼 수 있는 아주 간단한 문제들을 모아봤다. 프로그래머스 같은 플랫폼을 이용할 때는 함수 인자로 던져주기 때문에 입출력이 필요없지만, 백준에서는 입출력 함수를 뭐 쓰냐에 따라 실행 시간이 많이 달라지기도 한다 🙋‍♂️ 문제 리스트 두 수 A,B를 입력받고 A+B를 출력하는 문제들 https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net https://www.acmicpc.net/problem/2558 2558번: A+B - 2 첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10) www.acmicpc.net https://ww..

  • 백준 :: 10951번 A+B-4 (Java, Python)

    백준 :: 10951번 A+B-4 (Java, Python)

    https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 브론즈 5에 해당하는 쉬운 문제이지만, 테스트의 종료 조건을 처리하지 못해서 틀린 사람들이 많은 것 같다. 문제를 살펴보자. 살펴볼 포인트는 두 가지이다. 공백을 기준으로 두 정수가 입력됨 더 이상 읽을 데이터가 없을 때 입력이 종료 여기서 주의할 점은 읽을 데이터가 없다는 것 ! 읽을 수 있는 데이터가 없다는 건 EOF 를 의미한다. EOF 는 End Of File. 데이터가 더 이상 존재하지 않는 파일의 끝을 의미한다. 일단 입력 방식을 여러 가지로 해서 풀어보자. 사실 방금 자바 입력 시간 줄이는 법..

  • 알고리즘 스터디 :: 알고리즘이란 ?

    알고리즘 스터디 :: 알고리즘이란 ?

    Algorithm 이란 어떤 문제를 해결하기 위한 여러 동작들의 모임 이다. 간단하게 이렇게 생각해보자. 학교에서 집을 갈 때 버스로 갈 수도 있고, 택시로 갈 수도 있는 상황이다. 이런 상황에서 나라면 아마 버스를 타고 갈 것이다. 왜냐면 싸니까 🫠 학교에서 집으로 가는 문제를 버스를 타는 방식으로 해결 하는 것 ! 이게 바로 알고리즘 이다. 항상 어떤 문제를 해결하는 방법이 똑같은 건 아니다. 만약 치킨을 시켰는데 벌써 도착해버렸다면? 택시를 타고 빨리 집에 가는 방법을 선택할 것이다. 이런 식으로 어떤 조건이 바뀌게 되면 문제를 해결하는 방식이 달라질 수도 있다. 공부방법 먼저 알고리즘이나 문제를 푸는 방법을 이해하기 완벽하지 않거나 일부만 이해해도 성공~ 관련 문제를 풀어보기 한 문제는 길어도 1..

Hot

  • Python :: 5 - 여러 번 반복하는 일을 하자

    Python :: 5 - 여러 번 반복하는 일을 하자

    앞 장에서 우리는 무한 루프 구조를 살짝 경험해보았다. 프로그램에서 "반복" 이라는 것은 큰 의미를 가진다. 프로그램을 작성하는 것은 결국 우리가 직접 하기 어려운 일들을 컴퓨터에게 맡기는 것인데, 어떤 일을 반복해야 하는 횟수가 클수록 컴퓨터에게 맡겼을 때의 효율은 올라간다. "반복" 하기 위해서는 반복문을 사용하는데, 반복 구조를 사용하면 프로그램이 간결해지게 된다. 예를 들어 동일한 작업을 반복하기 위해 똑같은 문장을 복사하여 붙여넣기 하는 것보다 반복 구조를 사용하는 편이 프로그램을 간결하게 만든다. 또 프로그래밍에 필요한 시간도 단축할 수 있다. 반복문을 간단하게 맛보자. for i in range(100) : print("파이썬을 열심히 공부하자!") 뒤에서 배우겠지만 해당 코드는 문자열을 1..

  • Gradle :: Lombok 추가 시 이슈

    Gradle :: Lombok 추가 시 이슈

    Annotation 을 사용하기 위해 build.gradle 에 dependency 를 추가하는 과정에서 여러 이슈들이 있었다. 오늘은 그 이슈들을 해결하는 과정을 리마인더하기 위해 적어보려 한다. 먼저 lombok 을 사용하기 위해 build.gradle 에 다음 문구를 추가했다. implementation('org.projectlombok:lombok') 이후 아래 DTO 코드에 Annotation 을 추가하고 Unit test 를 진행했다. @Getter @RequiredArgsConstructor public class HelloResponseDto { private final String name; private final int amount; } 테스트 코드를 실행했는데 아래 에러 발생.. h..

  • Spring Boot :: 처음 시작하는 Gradle 프로젝트 (build.gradle)

    Spring Boot :: 처음 시작하는 Gradle 프로젝트 (build.gradle)

    spring initializr 를 사용하면 빠르게 spring boot 의 설정을 할 수 있지만, 공부하는 입장에서 build.gradle 의 코드가 무슨 역할을 하는지, 추가로 의존성 추가가 필요하면 어떻게 해야 하는지는 알고 넘어가보자. 먼저 IntelliJ 에서 New Project 로 Gradle 프로젝트를 생성한 후에 build.gradle 파일을 지우고 아래 코드들을 순서대로 작성해보자. 다 작성하고 나면 spring boot 에 필요한 최소 설정은 다 추가되어 있을 것이다. // build.gradle buildscript { ext { springBootVersion = '2.1.7.RELEASE' } repositories { mavenCentral() } dependencies { c..

  • 우리팀의 코딩 컨벤션 정하기

    우리팀의 코딩 컨벤션 정하기

    왜 필요한가? 팀원들과, 특히 백엔드끼리 협업을 하면서 설계를 끝내고 구현으로 들어가면서 가장 먼저 맞닥들인 문제는 “컨벤션” 이었다. 주위에 물어보니 그게 무슨 문제가 되고 왜 정해야 하는지 이해를 못하는 사람들도 있었지만, 같은 프로젝트의 코드를 건드리는 팀원의 입장에서 다른 사람이 쓴 코드를 이해하는 데에 시간이 걸리거나 하다못해 DTO 의 클래스 이름부터가 뭐하는 DTO 인지 알기 어렵다면, 같이 코드를 작성하는 데에 불편함이 있다. 그래서 프로젝트를 같이 하는 팀원과 컨벤션을 정하고 코드 작성을 시작하기로 했다. 코드 스타일에 표준이라는 것은 없지만, 팀 내부에서 같은 코드 스타일을 결정하고 유지하는 것이 작업 효율을 높일 것이라고 생각했다. 그리고 유지보수 ! 내가 코드를 계속 작성하고 고쳐나..

  • GDB :: gdb 사용법 및 옵션 정리

    GDB :: gdb 사용법 및 옵션 정리

    GDB 라고 부르는 GNU Debugger는 GNU 소프트웨어 시스템을 위한 기본 디버거. GDB는 다양한 유닉스 기반의 시스템에서 동작하는 이식성 있는 디버거로, 에이다, C, C++, 포트란 등의 여러 프로그래밍 언어를 지원. GDB 사용법 % gcc -g test.c -o test % gdb (gdb) file [test] // symbol table을 불러와서 디버깅 준비. (gdb) list // 현재 위치에서 소스 파일의 내용을 10줄 보여줌. (gdb) run (r) // 프로그램 시작. (gdb) break (b) // 라인 번호나 함수 이름을 인자로 줄 수 있음. 특정 라인이나 함수에 브레이크 포인트 설정. (gdb) disas [func or var] // 특정 주소를 disassemb..