전체 글

프로그래밍 관련 글을 올려요
1. 소개 Previous_gtids_log_event 는 MySQL DB 에서 발생하는 binlog event 중 하나로 직전 binlog 파일에 기록된 gtid_executed 를 담고 있는 이벤트이다. gtid_executed 는 특정 DB 에 지금까지 발생한 모든 GTID 들을 간소화된 형태로 저장하고 있는 값인데, 아래와 같은 형태를 띄고 있다. 하나의 GTID 묶음 형태 일수도 있고 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5 복제에 의해 여러 개의 DB 에서 파생되어 진 경우, 각각의 DB 마다 id 값이 달라 여러 개의 GTID 묶음이 될 수 있다. 2174B383-5441-11E8-B90A-C80AA9429562:1-3, 24DA167-0C0C-11E8-844..
· 일상
대회 https://kaupc2022.com/ 제2회 한국항공대학교 프로그래밍 경진대회 프로그래밍에 관심이 있다면, 지금 바로 도전해보세요. kaupc2022.netlify.app 올해로 2번째로 열리는 교내 프로그래밍 대회에 참가했다 🙋‍♂️ 작년엔 내가 열었는데.. 어떻게 좋은 후임자를 둔 덕에,, 다음 회차 참가자로 참여할 수 있어서 너무 행복했다. 팀 구성 팀원은 올해 2학년인 영서와 호은이다. 팀명도 이름에서 하나씩 따서 수영왕 🏊 이번에 누구랑 팀을 짜서 나갈지 많이 고민을 했었는데, 일단 저학년(1, 2학년) 이랑 나가고 싶었다. 나는 지금까지 대회를 계속 나가고 문제를 풀 수 있었던 이유가 1학년때 아는 형들 따라 참가한 대회가 너무 재밌어서인데, 졸업하기 전에 나도 마지막으로 그런 감성을..
· Flutter
이번 글은 Amplitude Developer Center의 Flutter SDK 글을 참고하여 작성하였습니다. https://www.docs.developers.amplitude.com/data/sdks/flutter/ Flutter SDK - Amplitude Developer Center The Amplitude Flutter SDK installation and quick start guide. www.docs.developers.amplitude.com Amplitude란? 우리가 웹 또는 앱을 만들고 배포를 하면 모르는 사용자들이 들어와 이런저런 기능들을 사용하게 됩니다. 단순히 개인 프로젝트나 서비스를 사용할 사람들이 정해진 경우엔 괜찮지만, 마케팅 등을 통해 익명의 사용자들을 더 많이 모으..
· Flutter
플러터로 앱을 개발하여 MVP를 출시한 이후에 피드백을 받다 보니 하단 네비게이션 바에 이런저런 문제가 있음을 알게 되었습니다. 분명 공식 문서랑 괜찮아 보이는 곳들을 참고했었는데.. 화면이 많아지다 보니 전에는 보이지 않던 문제들이 발생했고, 더 괜찮은 문서를 찾던 중 좋은 가이드가 있어서 공유하게 되었습니다. 꽤 괜찮은 문서 https://codewithandrea.com/articles/multiple-navigators-bottom-navigation-bar/ Flutter Bottom Navigation Bar with Multiple Navigators: A Case Study A guide to implementing multiple independent navigation stacks wi..
AWS Route 53으로 ec2 인스턴스의 public ip를 레코드 등록 후 접근했더니 웹 페이지에 Invalid Host header 가 떠서 찾아보니 vue.config.js 의 기본 세팅이 로컬에서는 접속이 허용되지만 외부에서 허용되지 않는다는 것이었다. 따라서 구글링해보았더니 전부 webpack-dev-server@3 버전으로 해결방법을 적어놓았길래 webpack-dev-server@4 버전 해결방안을 공유한다. vue.config.js 파일에 다음과 같은 속성을 추가하면 된다. module.exports = { devServer: { allowedHosts: "all", }, }; 참고로 버전 3에서는 이런식으로 추가하는데, 4버전으로 와서 disableHostCheck라는 속성이 사라졌다...
본 내용은 위키피디아 “Red-black tree”를 기반으로 관련 논문과 개인적인 이해를 바탕으로 작성하였습니다. 소개 Red-black tree(이하 “RB Tree”)는 일종의 자기 균형 이진 탐색 트리(Self-Balancing BST)입니다. 먼저 이진 탐색 트리란, 자신의 왼쪽 서브 트리에는 현재 노드보다 값이 작은 것, 오른쪽 서브 트리에는 값이 큰 것들만 가질 수 있습니다. 이러한 특성 때문에 이진 탐색 트리의 조회는 O(log n) 시간이 걸리게 되는데 다만 문제는 균형이 무너질 경우 O(N)까지 시간이 증가할 수 있다는 점입니다. 따라서 지금까지도 균형을 맞추기 위해 여러 자료 구조들을 개발하고 있습니다. (이진 탐색 트리 참고 : https://yoongrammer.tistory.co..
· JPA
본 글은 김영한님의 [인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편] 강의와 자바 ORM 표준 JPA 프로그래밍 책을 기반으로 정리해 작성하였습니다. 1. 프록시 엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다. 예를 들어 내가 레알 마드리드라는 축구 클럽의 스카우터이고 손흥민 선수에 대한 정보를 얻고 싶을 때, 단순히 그 선수의 신체적 데이터만 알고 싶다면 굳이 선수가 소속된 팀의 정보까지 알 필요는 없다는 것이다. (잉크가 아까울수도) 아래 코드와 함께 살펴보자. 1) 선수 엔티티 @Entity public class Player { @Id @GeneratedValue private Long id; private Double height; private Double weig..
· JPA
본 글은 김영한님의 [인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편] 강의와 자바 ORM 표준 JPA 프로그래밍 책을 기반으로 정리해 작성하였습니다. 오늘은 실무에서 보통 쓰지 말라고하는 일대다(연관관계 주인을 일로 설정한 경우), 다대다 관계에 반항하는 말안듣는 잼민이들을 위한 필독 지침서이다. (사실 필자도 포함...) 이 포스팅에서는 일대다, 다대다 관계에 대해 살펴볼 것이고 단점들도 같이 알아볼 예정이다. 글을 읽으시면서 이것들을 그냥 무지성으로 쓰지 않는 것보단 이들이 어떤 문제를 갖고 있는지 알고 쓰지 않는 현명한 개발자가 되었으면 좋겠다. 1. 일대다 일대다 관계는 다대일 관계의 반대 방향으로 "일"이 연관관계의 주인이 된다. (앞을 연관관계의 주인이라고 생각하자) "일"에서는 엔..
· JPA
본 글은 김영한님의 [인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편] 강의와 자바 ORM 표준 JPA 프로그래밍 책을 기반으로 정리해 작성하였습니다. 오늘은 JPA를 배우면서 정말 중요한 연관관계 매핑, 그리고 더 중요한 연관관계의 주인 설정에 관해 알아볼 것이다. 먼저 연관관계 매핑에 대해 공부하는 이유를 한 문장으로 설명하자면 다음과 같다. (필자의 생각) 객체에다가 테이블처럼 외래 키를 저장해두면 협력 관계를 가질 수 없기 때문에 객체의 참조와 테이블의 외래 키를 매핑하는 것이 필요하다. 단순히 정리하면, 객체에는 외래 키를 저장하지 않을 것이고, 객체의 참조와 테이블의 외래키를 매핑할 것이다. 이 부분은 JPA에서 매우 어려운 부분에 해당하고 아래에서는 강조한 위 문장이 무슨 뜻인지,..
· JPA
본 글은 김영한님의 [인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편] 강의와 자바 ORM 표준 JPA 프로그래밍 책을 기반으로 정리해 작성하였습니다. 오늘은 JPA를 사용하면서 가장 기본적이고 중요한 일중 하나인 엔티티와 테이블 매핑, 기본 키(PK) 매핑, 필드와 컬럼 매핑에 대해서 알아볼 것이다. 1. @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 를 필수로 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부른다. @Entity public class suhwanc { private int age; } @Entity를 사용할 때는 주의할 점이 몇 가지 있다. 기본 생성자가 필수이다(파라미터가 없는 public or protected ..
· JPA
본 글은 김영한님의 [인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편] 강의와 자바 ORM 표준 JPA 프로그래밍 책을 기반으로 정리해 작성하였습니다. JPA의 역할은 크게 엔티티와 테이블을 매핑하는 부분, 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있다. 오늘은 엔티티 매니저(Entity Manager)가 어떤 역할을 하고, 어떻게 사용하는지 알아보자. 1. 엔티티 매니저 팩토리와 엔티티 매니저 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManager Factory를 하나만 생성한다. 다음은 생성 코드이다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("suhwan"); 여기 Persisten..
· JPA
본 글은 김영한님의 [인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편] 강의와 자바 ORM 표준 JPA 프로그래밍 책을 기반으로 정리해 작성하였습니다. 이번 장에서는 원래 스프링 프로젝트 생성, 메이븐, h2 Database 설정 등을 해야 하는데, 이런 부분은 사용자나 하고 싶은 프로젝트마다 다를 수 있기 때문에 포스팅에서는 생략하고 간단한 어노테이션이나 엔티티 매니저 같은 기본적인 부분을 알아보고 넘어가도록 하겠다. 1. 객체 매핑 시작 JPA를 사용하려면 가장 먼저 테이블들을 매핑해야 한다. 1일차에서 살펴본 멤버 테이블을 매핑해보자. package hellojpa; import javax.persistence.*; @Entity @Table(name = "MEMBER") public cl..
suhwanc
Suhwanc