본문 바로가기

분류 전체보기

(40)
[트러블 슈팅] 중복 객체 저장으로 인한 StackOverflowError와 중복 검사 최적화 문제 상황NEIS 공공데이터를 활용해 특정 학교의 시간표 데이터를 불러온 후, Course 엔티티로 변환하여 DB에 저장하는 API를 구현하였다.이후 동일한 API를 재호출했을 때 java.lang.StackOverflowError 와 함께 500 Internal Server Error가 발생하였다.Postman에서 확인 결과, 호출은 정상적으로 되나 데이터 저장 과정에서 에러가 발생. 원인 분석시간표 API 호출 후 Course 엔티티를 생성하여 courseRepository.saveAll(courseList)로 저장할 때,이미 저장된 동일한 Course가 중복으로 다시 저장되면서 무한 참조 또는 StackOverflow가 발생함.중복 여부 확인이 애플리케이션 코드에서 불완전하게 이뤄졌으며, DB에서..
나이스 교육 정보 OpenApi 사용 방법 및 후기 4/30 교육 공공데이터 활용 공모전 서비스 부문에 참가작을 제출 완료 하였다. 우리팀은 고교학점제 실시로 인한 학생들의 교육 정보 탐색을 주제로 서비스를 하였다. Spring을 활용해서 백엔드를 구축하였기 때문에 오늘은 neis open api를 spring에 연동하는 방법을 리뷰하려 한다. 앞서 이 글은 openApi 활용이 완전 처음인 분들을 기준으로 소개하는 듯한 흐름의 글이니, 당연한 말을 왜할까 혹은 용어의 사용이 불편한 사람들이 있더라도 넓은 마음으로 스크롤을 내려주길 바라는 마음이길 바랍니다. https://open.neis.go.kr/portal/mainPage.do 나이스 교육정보 개방 포털OPEN API 활용신청 제공되는 데이터를 활용하기 위해 인증키를 발급 받으세요. 교육정보개방 소..
[디지털 회로] 부울 방정식 최소화 & 카르노 맵 부울 방정식 최소화저번 포스트의 내용처럼 일단 여기의 몇 가지 내용을 최소화 시켜보자.방정식 풀고 있으니 중2 정도로 돌아간 기억이 나서 재미있었다. 앞서 나온 드모르간으로 활용할 수 있는 방안은 Bubble Pushing 이라는게 있다. 드모르간에 의하여 둘은 스왑가능하다.그래서 아래와 같이 단순화도 가능하다.  1. K-Map 개요 • 부울식(Boolean Expression)을 시각적으로 간단하게 줄이는 도구 • 1953년 Maurice Karnaugh가 고안 • 최대 4개 변수까지 효율적으로 사용 가능 • 진리표(Truth Table)의 1을 묶어서 단순한 논리식으로 표현2. K-Map의 기본 구성 • 행과 열로 이루어진 격자(grid) • 각 칸은 **입력 변수의 조합(Minterm)**을 나타..
[디지털 회로] 조합 논리 회로 (Combinational Logic Circuits) 와 불 방정식 1. 조합 논리 회로 (Combinational Logic Circuits)1.1 개요 (Introduction)• 조합 논리 회로는 메모리가 없으며, 현재의 입력값만을 기반으로 출력을 결정함. • 입력 단자 (Input Terminals)• 출력 단자 (Output Terminals)• 기능적 명세 (Functional Specification): 입력과 출력 간의 관계 정의• 타이밍 명세 (Timing Specification): 입력 변화에 따른 출력 응답 지연 우리는 기능적 명세부터 살펴본다. 1.2 논리 회로의 구성 요소 (Circuits Components)• 노드 (Nodes)• 입력: A, B, C• 출력: Y, Z• 내부 노드: n1 (중간 연결점)• 회로 요소 (Circuit Eleme..
[시스템 프로그래밍] Assembler 어셈블러 1. 프로그램 번역 및 실행 개요(Translating and Starting a Program)• 초창기 컴퓨터에서는 기계어 (Machine Code) 로 직접 프로그래밍함.• 기계어는 이진 코드(Binary Code) 로 이루어져 있으며, 사람이 읽고 쓰기 어려움.• 현대에는 고급 언어(High-Level Language) 를 사용하여 프로그래밍하고, 이를 기계어로 변환하는 과정이 필요함.• 컴파일러(Compiler) → 고급 언어 → 기계어로 변환.• 어셈블러(Assembler) → 어셈블리어(Assembly Language) → 기계어로 변환.• 링커(Linker) → 여러 개의 기계어 파일을 하나로 결합.• 로더(Loader) → 실행할 기계어 프로그램을 메모리에 적재.2. 번역 과정의 계층 구..
[시스템 프로그래밍] SIC, SIC/XE 개요 시스템 프로그래밍 공부 겸 정리. 일단 오브젝트 코드를 해석하는게 제일 중요한 것 같다. 문제를 많이 풀어보는게 좋아보인다! SIC (Simplified Instructional Computer) 개요(SIC Overview)• 실제 컴퓨터에서 자주 사용되는 하드웨어 기능을 포함하되, 불필요한 복잡성은 제거한 가상의 컴퓨터.• 특정 구현에 구애받지 않으며, 시스템 소프트웨어 개념을 이해하는 데 도움을 줌. SIC의 두 가지 버전• SIC (기본 모델) → 배우고 아래의 더 복잡한 내용을 배울 예정• SIC/XE (확장 모델, eXtra Equipment or Expensive)• SIC에서 작성된 프로그램은 SIC/XE에서도 실행 가능함 (Upward Compatibility). SIC의 주요 하드웨어 ..
MariaDB 설치 및 spring 연결(mac M1) 최근에 넘겨받게 된 프로젝트가 하나 있다. 그 전에 DB라곤 H2 밖에 써본적 없기에 안에 아키텍쳐를 눈으로 보고 싶어도 실행이 안되는 상황이었다. 아는 분께 여쭤보니 DB 연동문제라는 답을 받고 난 후, 라는 인수인계서의 내용을 풀기 위해 3번이 의미하는 바가 무엇인지는 모르지만 설정을 하였다. DB연동이 무서워서 일단 실행해본 결과, 당연히 오류가 났고 실행은 안됐다. DB 설치 관련해서 워낙 설정도 달라서, 이를 해결하는데 어려움을 겪어 내가 해결한 방법을 복기하고자, 나아가 도움이 될 수 있다면 도움이 되고자 정리해본다. 제목의 내용을 알아보자. MariaDB 설치 및 spring 연결(mac M1) 일단 MariaDB 설치를 먼저 해주어야한다. Mac HomeBrew가 설치되어 있고, 최신화 되..
[스프링 기본] 스프링 컨테이너와 싱글톤 패턴 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 이번 글에서는 웹 어플리케이션과 싱글톤에 대해 알아보고, 싱글톤 패턴을 적용하는 방법과 스프링 컨테이너가 어떻게 이를 관리하는지 살펴보겠습니다. 웹 어플리케이션과 싱글톤 우선, 순수한 DI 컨테이너인 AppConfig는 요청마다 객체를 새로 생성하여 메모리 낭비가 심한 단점이 있습니다. 해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 됩니다. -> 싱글톤 패턴 싱글톤 패턴 싱글톤 패턴은 클래스의 인스턴스가 한 개만 생성되도록 보장하는 디자인 패턴입니다. 이를 위해 private 생성자를 사용하고, 객체 인스턴스를 공유하는 방식으로 설계됩니다...