전체 글 135

MYSQL SHOW INDEX

index 정보를 확인하기 위해 "show index from 테이블명;"을 하는 경우가 있다. 조회되는 주요 값들 중 어려울 수 있을만한 값들에 대해 정리하고자 한다. (너무 쉬운 내용은 뺐습니다.) 공식문서를 기반으로 내용을 추가하여 정리하였습니다. 출처)https://dev.mysql.com/doc/refman/8.0/en/show-index.html Non_unique : 0인경우 unique, 1인 경우 non-unique Key_name : pk값의 인덱스명은 언제나 PRIMARY. 명령문을 통해 만들때는 지정한 index명. orm을 통해 생성할땐 프로그램에서 만들어준 인덱스명(난수값). Seq_in_index : 멀티컬럼인덱스일경우 순서, 1부터 시작합니다. 단일컬럼 인덱스일경우 1 Col..

JPA auto-ddl update는 컬럼 속성을 수정하지 않는다.

현재 author 테이블은 위와 같은 데이터 타입과 lenth를 가지고 있다. password length가 너무 길어 100으로 줄이고자 하는데, 아래와 같이 length를 100으로 바꿔 서버를 재기동하였는데도 db alter가 제대로 작동하지 않는다. auto-ddl은 update로 설정돼 있는 상황. 이유는 ddl-auto에 update 설정을해도 jpa에서 컬럼 속성은 변경이 되지 않기 때문이다. @Setter @Getter @Entity public class Author { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 50) private ..

BTS 진(김석진) 입대 - 지루한 군생활의 시작?

( 흥미로운 이코노미스트의 헤드라인을 요약하여 opinion을 더합니다. 볼드체는 원문기반의 기사 요약, 비볼드체는 저의 opinion입니다.) *이코노미스트 헤드라인 2022/12/14 "BTS takes on Kim Jong Un" 이건 번역을 어떻게 해야할지 모르겠지만, 왜 갑자기 김정은이 튀어나옵니까. "한국에서의 군복무는 스타덤에 오른 그에게 다소 따분할수(a tad duller) 있다." "그는 대부분의 한국남자들이 수행해야하는 지루한 통과의례(dull rite of passage)를 시작했다. " 한국언론에서는 절대 표현하지 않을 한국군대의 지루함과 따분함에 대해 여러번 반복해주고 있다. 맞다. 지루하고 따분한 군생활은 수많은 무대의 화려함에 익숙한 스타에게는 감히 상상도 안될만큼 훨씬 더 ..

선진국 채권투자가 이젠 지루하지 않다

(흥미로운 이코노미스트의 헤드라인을 요약하여 opinion을 더합니다. 볼드체는 원문기반의 기사 요약, 비볼드체는 저의 opinion입니다.) *이코노미스트 헤드라인 2022/12/13 "채권투자자들에게 이젠 모든 국가가 emerging market이 되어가고 있다. 부유한 국가의 국채들이 지루해지기까지는 몇년이 걸릴지도 모른다." 미국 국채금리가 4%대. 필리핀 국채금리 5%대. 인도금리6%대. 채권투자에 있어 이제 어떤 국가가 신흥국가인지 금리만 보고는 분간하기가 어려운 시대가 됐다. 지급위험율과 지급하기로 약속한 이자율은 비례하는 법이고, 미국채는 안전한만큼 이자율이 낮아 그동안 지루한 채권이었는지 모른다. 그러나, 이젠 위험하지도 않은 미국채가 수익률까지 좋다. 선진국들의 금리가 신흥국보다 빠르게..

모디와 인도의 경제성장

(흥미로운 이코노미스트의 헤드라인을 요약하여 opinion을 더합니다. 볼드체는 원문기반의 기사 요약, 비볼드체는 저의 opinion입니다.) *이코노미스트 헤드라인 2022/12/12 "인도 모디총리는 구자라트주 총리였다. 구자라트는 인도에서 6번째로 부유한 주이고, 인도에서 가장 빠른 경제성장을 보여왔다. 모디총리가 구자라트에 시행했던 처방은 무엇일까?" 인도는 다양한 민족과 다양한 언어들이 섞여있는 국가이고, 미국과 같이 주제도를 가지고 지방자치제를 시행하고 있는 국가이다. 각 지방마다의 특색이 강하여 통합된 국가정체성을 갖고 있지 못하기에 항상 통합과 통치의 이슈가 발생한다. 언어도 통일되지 않다 보니, 관공서에서는 영어가 공용어가 되고, 인도인들이 영어를 잘하는 것은 식민지시절 탓도 있지만 여전..

이직할 회사 평균연봉을 정확하게 확인하는 법(feat. Dart시스템)

이직하기에 앞서 해당 회사의 직원들이 평균적으로 얼마나 받는 회사인지 파악하는 것은 중요할 것이다. 또한 이를 바탕으로 내 연차에 맞는 연봉을 추정하는 것도 가능하다. 이직할 회사가 평균연봉이 5천만원도 안되는 회사인데, 내가 기존회사에서 연봉을 1억을 받는 사람이라 최종합격후 연봉 협상때 1.1억정도를 부르면 어떤 상황이 벌어질까? 해당 회사에서 황당해 하면서 reject을 놓을수도 있고, 어찌어찌 입사를 하기는 했는데 내가 최고연봉자가 되어 나한테 많은 기대와 부담이 쏟아질수도 있는 상황. 어떤 경우이든 해당 회사의 연봉 average를 알고 가는 것은 유익할 것이다. 내 회사이든 남의 회사이든 평균연봉을 알기 위해 다들 구글링을 하고 잡플래닛, 블라인드를 뒤질텐데, 워낙에 연차별, 사람별 천차만별이..

프론트엔드 VS 백엔드

이제 막 진로를 정하고자 하는 신입개발자들은 백엔드로 커리어를 정할지, 프론트엔드로 할지 많은 고민이 될 것이라 생각한다. 진로를 정함에 있어 조금이라도 도움이 되고자 아는선에서 글을 써보고자 한다. (백엔드 개발자인 나의 편견과 주관이 다소 섞여 있을수 있으니, 혹시 불편하게 느끼시거나 잘못된 정보가 있다면 댓글을 달아주세요.) 1.수요공급측면 최근1년 스타트업으로 이직 후에는 개발자를 뽑기위해, 프론트엔드/백엔드 개발자들의 지원이력서들을 많이 검토하고 있는데, 최근들어 유독 저연차 프론트엔드 개발자들의 공급이 많아지고 있는 것을 느끼고 있다. 다시 말하면 괜찮은 2,3년차 백엔드 개발자들을 찾기가 힘들어졌다는 뜻이다. 대한민국 개발자의 주요 공급 root 중 하나인, 국비교육을 마치고 경력을 쌓기 시..

GROUP BY 2개 이상

위와 같이 생긴 상품 구매 table이 있다고 하자. 동일한 상품을 2번이상 재구매한 고객을 따로 추출하고자 한다. 즉, 어떤 고객이 어떤 상품을 재구매했는지 파악하고자 한다. 위의 테이블을 보면 id 1번 고객은 상품3을 2번 재구매 하였다. 2번 고객은 2번이상 재구매한 상품은 없다. 3번 고객은 상품1을 2번 재구매 하였으므로 최종적으로 아래표와 같은 형태의 데이터가 추출 되어야 한다. USER_ID PRODUCT_ID 1 3 3 1 이때 user_id로만 group by하여 count(*)>=2 하게 되면, 1,2,3고객 모두가 조회가 될 것이고, product_id로만 group by하여 count(*)>=2 하게 되더라도, 원하는 값을 얻지 못할것이다. 그래서 2번 이상 구매한 user중에 같..

DB,서버 타임존 일괄 UTC 세팅 후 client에서 KST 출력

하나의 웹서비스를 특정 지역에서 제공하기 위해서는 필수적으로 고민하게 되는 개발이슈는 local 시간에 대한 문제이다. 글로벌한 회사들은 고민의 여지 없이 DB,linux,서버프로그램의 모든 서버의 시간대를 UTC로 설정한 뒤에, 클라이언트 화면단에서 각각의 국가에 맞게 시간을 세팅하여 화면을 제공할 것이다. 그러나, 한국에서만 서비스를 제공하는 은행, 공공기관 같은 경우에는 경험상 서버, DB세팅을 한국시간대인 KST로 하는 경우도 적지 않았다. 사실, KST로 세팅하게 되면 DB에 저장되는 생성일, 수정일 등의 날짜와 서버로그 또한 한국시간대로 설정이 되어 보고를 위한 데이터추출 또는 로그트래킹 등 개발자들입장에서 편리한 부분이 많은것도 사실이다. 다만, UTC든 KST든 통일된 시간대로 운영체제, ..

추상클래스와 익명클래스

java에서 추상클래스는 인스턴스화 시킬 수 없다고 흔히들 알고 있다. 추상클래스는 기본적으로 구현되지 않은 메서드가 포함되어 있는 클래스이므로, 인스턴스를 통해 해당 메서드를 실행하는 것이 불가능하기 때문이다. public abstract class Animal { abstract void cry(); } 위와 같이 생긴 Animal 추상클래스를 main메서드에서 Animal ac = new Animal(); 이렇게 객체화 시키면 'Animal' is abstract; cannot be instantiated 라는 에러가 발생한다. 그런데, 그와 동시에 intellij에서는 아래와 같이 자동완성을 시켜준다. Animal ac = new Animal() { @Override void cry() { } }..