일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터베이스
- 스프링
- DBMS
- sql
- AI
- CD
- 아이패드다이어리
- 다이어리
- 오라클
- libasm
- swift
- javascript
- Xcode
- jenkins
- JPA
- Dining philosopher problem
- 스프링부트
- 프로그래밍언어론
- 스프링부트 웹 소켓
- 소켓
- CI
- 42seoul
- 네트워크
- 리눅스
- Spring
- springboot
- MySQL
- 밥먹는 철학자
- IOS
- 인공지능
- Today
- Total
목록Computer Engineering (176)
Hi yoahn 개발블로그
리팩토링을 목표로 시작했던 3기, 리빌딩으로 마무리했다. 탁구 매칭 & 랭킹 시스템으로 42Seoul 카뎃들을 대상으로 하는 서비스이고 작년쯤부터 개발했던걸로 알고있다. 1기때 메인 기능 개발하고 2기때는 관리자 기능이 추가됐다. 나는 3기때 들어오게 되서 기존 서버 구성을 늦게 알게 되었는데, OAuth 를 잘못 사용하고 있는 부분(안쓰고 있는 것과 마찬가지였다.)과 데이터베이스 정규화 제대로 안되어있는 부분들(외래키가 불필요하게 많이 걸려있는 부분, 컬럼은 있는데 값이 아예 안들어가는 부분,,)로 인해 3기 온보딩 중에 설계문제로 디비에 똑같은 데이터가 두번 들어가는 문제가 있었다. 또한 코드 리팩토링을 해야하는데 안쓰는 클래스 파일도 몇개 있는데 양이 많고 기존 코드에 대해 완벽히 이해하고 있는 사..
Jenkins 를 이용하여 CI/CD를 할 때, Docker를 사용하는 상황이라면 Jenkins 가 설치된 인스턴스에 이미 Docker 가 깔려있지만 Jenkins 이미지 안에는 Docker 가 없기 때문에 docker 실행시 오류가 발생한다. 이를 해결하기 위해 Jenkins 이미지 안에 도커를 또 깔아야 할까? 아니다. 호스트 컴퓨터에 깔려있는 도커 데몬과, 젠킨스 컨테이너 내에 존재하는 도커 클라이언트가 통신할 수 있도록 해주면 된다. 1. docker 설치 sudo wget -qO- https://get.docker.com/ | sh sudo usermod -aG docker ${USER} # docker 실행을 sudo 권한 없이 할 수 있게 해줌 sudo systemctl start docke..
42GG 플젝을 진행하던 중 무려 테이블 5개를 동시에 조인해야하는 상황이 발생했다. 현재 서비스중인 프로젝트이다보니 DB 에 저장된 데이터 양도 좀 있고, 꾸준히 사용하는 분들이 계시기 때문에 앞으로 더 많은 데이터가 생길 수 있어 해당 쿼리 뿐만 아니라 다른 sql 쿼리들도 최적화가 가능한 쿼리가 있는지 확인하기 위해 사용해보려고 한다. 실행계획이란 DB 옵티마이저가 쿼리를 어떻게 실행할지에 대한 계획이다. 실행계획을 통해 데이터를 조회할 때 검색시에 테이블을 풀스캔하는지, range scan 을 하는지 봐야하고 설정해둔 인덱스를 타는지 확인할 수 있다. EXPLAIN SELECT * FROM A, B WHERE A.bid=B.id; Explain 키워드를 통해 실행계획을 확인할 수 있다. (이외에도..
이번주에 두번째 스프린트가 종료된다. 사실 그동안 개발을 할때 일단 빨리 하고 코드는 나중에 개선하면 된다는 생각을 가지고 있었는데, 잘못된 생각이었던것 같다. 시스템 자체 복잡도가 낮지 않은 프로젝트인데, 좀만 복잡한 api 를 구현할 때가 되면 머리로만 생각해서 짜는게 쉽지 않다. DB join 쿼리부터 복잡할때도 있고 이것저것 고려해야 할 요소가 많은데 어디 페이지에서 어떤 용도로 쓰는거라는 설명 한줄 가지고는 부족하다. api 하나를 예시로 들면, 게임 종료되면 랭크게임의 경우 같은 게임을 한 두명에게 동시에 입력받아서 그 점수가 같을 때에야 ELO 시스템을 통해 탁구력을 계산한다. 그런데 42gg 서비스는 랭킹 조회 성능 개선을 위해 Redis 를 사용하고 있다. 그래서 탁구력을 계산하면, 그 ..
기존 시스템 분석하면서 왜 이렇게 되어있나 싶은 로직과 DB를 마주하였다. https://www.figma.com/file/uiJL8G0rKLp8ZIJc5Rj7Fy/42GG?node-id=0%3A1&t=MIs1LoNUqxts1I5o-1 DB가 제일 심각했는데, 실제 DB와 ERD가 차이가 있기도 했고, user 테이블의 외래키를 id(INT) 를 거는 테이블과 intra id (VARCHAR)를 외래키로 거는 테이블의 공존하는 상황이었다. 원래 42gg 3기 프로젝트 진행 목적은 리팩토링이었다. 성능 개선이나 코드 가독성 향상을 목표로 하고 있었는데, 레거시 파악을 하다 보니 시스템 개선이 시급하다고 생각했다. 깔끔하지 않은 뼈대를 고치다보면 누더기가 될 뿐,, 하나의 외래키를 여러 테이블에서 가지고 있..
선정자 필수 이행사항 1. 신한 청년수당 전용 계좌 개설 & 신한 청년수당 체크카드 발급 기존 한도제한 계좌를 보유한 경우 기존 계좌 해지 후 발급 가능 2. 자기활동 기록서 작성 및 제출 청년수당 지급기간 동안 청년수당이 지급된 첫 달 제외, 나머지 5개월 간 매월 25-30일에 자기활동기록서 제출 🚨청년수당 계좌로 받은 수당은 청년수당 사용 목적에 부합해야하며, 자기가 넣은 돈은 사용할 수 있지만 청년수당 금액과 섞이면 안됨🚨 수당이 사용 목적에 부합하지 않은 곳에 사용된 뒤 다시 그 금액을 입금하는 것은 의미가 없음 (수당 지급 중지될 수 있음) ex) 청년수당 계좌에 적금 자동이체를 신청하는 경우, 자동이체가 되기 전에 본인이 자동이체에 해당하는 금액을 넣은 후 청년수당을 받아야 함
Spring Data JPA 를 사용할 때, Like 를 사용하여 작성한 데이터베이스 쿼리를 두번 이상 실행할 경우 에러가 발생하는 문제 이 이슈가 발생하는 경우, Hibernate 5.6.7 을 사용하고 있지 않은지 확인한 후 수정 버전인 5.6.9 로 가져오도록 변경해야 한다. 크로플 원정대 프로젝트의 경우 spring 버전을 2.7.0 을 가져와서 해결했다. https://hibernate.atlassian.net/browse/HHH-15142 [HHH-15142] - Hibernate JIRA 회사에서 관리하는 프로젝트에 참여하고 있습니다 hibernate.atlassian.net
2.3 Syntax-Directed Translation 문법에 나타나는 기호들에, 속성을 부착시켜서 구문을 체크하는 파싱과 동시에 부착된 속성을 분석하여 번역 속성이 부착된 문법 - 속성 문법 Attribute grammar 합성 속성 Synthesized Attribute 부모의 속성을 계산하기 위해서 자식들의 속성만 필요한 경우 모든 기호에 부착된 속성을 계산할 때 후손들의 속성만 필요 상속 속성 Inherited Attribute 자식의 속성 + 부모의 속성 + 형제자매 속성값을 다 사용하는 경우 속성 계산에 순환이 일어나는 경우 ( A->B->C->A), 속성 문법을 사용한 파스트리에서 기호들에 부착되어 있는 속성들의 의존성을 그래프로 표시했을 때 싸이클이 있으면, 어디서부터 계산해야 하는지를 ..
나는 코로나가 터진 직후 42Seoul 에 들어왔고, 당시 3학년 1학기를 마친 후 1년 휴학하여 본과정 과제를 달려 블랙홀을 3학년 2학기를 견딜 수 있을 만큼 늘린 후 복학, 3학년 마친 후 방학때 다시 과제를 달려 4학년 1학기를 마칠 수 있을 정도로 끝냈고, 4학년 1학기가 끝난 이후부터는 취준과 42를 병행했다. 그 중에 4학년 1학기 때까지는 코알리숑 점수 100점을 채워야 지원금이 나오는 시스템이었고, 심지어 원격 평가가 가능했기 때문에 학기 중에도 지원금을 받으면서 42서울 과정을 진행할 수 있었다. 그래서 학교와 병행하며 하던 중, 일상이 거의 회복되며 4학년 2학기 때쯤부터 클러스터 출석시간 80시간을 채워야 지원금이 나오는 시스템으로 변경되었다. 진짜 다행이었다. 4학년 2학기부터는 ..
컴파일러 Analysis (분석) Synthesis (합성) 1. 분석 1) 구문 분석 position := initial + rate * 60 분석과 유사한 작업 Structure editor 편집기 IDE Pretty printers 코드 예쁘게 출력해줌 컴파일러 처럼 문법을 알아야 예쁘게 출력 가능 Static Checkers 컴파일러와 유사하지만, 합성 파트가 없음 나중에 오류일 가능성이 있는 부분에 대해 오류 메시지를 띄워줌 (런타임까지 가지 않음) Interpreters source program -> target program 오른쪽의 표현 식들이 재귀적으로 계산됨(?) 명령어를 실행하기 위해 자주 사용됨 컴파일러와 유사한 작업 Text formatter 타이핑된 텍스트로부터 입력 스트림으로..