우리는 흔히 Pagination 을 작성할 때 간단하게 SELECT ... LIMIT X, Y 처럼 간단히 사용하고는 합니다. 하지만 이 방법은 굉장히 불안정하고, 요즘 같이 infinite-scroll 을 지원하는 경우에는 문제가 될 수 있습니다. 예를 들어 가장 최근 댓들을 먼저 보여줘야 한다고 가정하면 이렇게 작성할 수 있습니다. SELECT * FROM comments ORDER BY date DESC LIMIT 0, 10 가장 최근 댓글 10개를 가져오고.. 사용자가 페이지를 내리면 LIMIT 10, 10 으로 다음 10개의 댓글을 가져올 수 있습니다. 하지만, A 사용자가 첫 번째 페이지 댓글 10 개를 보고 있을 때 B 사용자가 댓글을 작성했고 A 사용자 두 번째 페이지로 넘어가면.. A 사..
-
Pagination 은 어렵습니다
우리는 흔히 Pagination 을 작성할 때 간단하게 SELECT ... LIMIT X, Y 처럼 간단히 사용하고는 합니다. 하지만 이 방법은 굉장히 불안정하고, 요즘 같이 infinite-scroll 을 지원하는 경우에는 문제가 될 수 있습니다. 예를 들어 가장 최근 댓들을 먼저 보여줘야 한다고 가정하면 이렇게 작성할 수 있습니다. SELECT * FROM comments ORDER BY date DESC LIMIT 0, 10 가장 최근 댓글 10개를 가져오고.. 사용자가 페이지를 내리면 LIMIT 10, 10 으로 다음 10개의 댓글을 가져올 수 있습니다. 하지만, A 사용자가 첫 번째 페이지 댓글 10 개를 보고 있을 때 B 사용자가 댓글을 작성했고 A 사용자 두 번째 페이지로 넘어가면.. A 사..
-
BASE64 인코딩이란?
개발을 하다보면 자주 쓰이게 되는 BASE64 인코딩, 주로 검색 URL, 타사 API 로 데이터를 주고 받을 때 또는 암호화 과정중에 사용하곤 하는데 BASE64 인코딩이란 무엇일까? 인코딩 인코딩(encoding)은 다음을 가리키는 말이다. - 부호화(符號化)나 인코딩(encoding)은 정보의 형태나 형식을 변환하는 처리나 처리 방식이다. - 문자 인코딩(文字-, 영어: character encoding)은 문자들의 집합을 부호화하는 방법이다. 위키백과에서 인코딩은 정보의 형태나 형식을 변환하는 처리나 처리 방식이라고 설명해주고 있다. 컴퓨터에 사용하는 문자 인코딩은 문자들을 컴퓨터가 이해할 수 있는 신호로 만드는 것을 의미한다. 컴퓨터는 이진법(0 or 1)을 사용해 정보를 처리하고 있기 때문에 ..
-
회사에서 요구하는 IOS 신입개발자의 역량
요즘 부트캠프에서 IOS 개발 과정을 배우고 있는 와이프님의 고민이 많아보인다. 부트캠프를 통해 개발은 공부하고 있지만 과연 회사에 취업을 할 수 있을지 걱정이 된다고 한다. 와이프님 뿐만 아니라 함께 개발 과정을 수료하는 분들도 취업을 잘 할 수 있을지 고민이 많다고 한다. 옆에서 부트캠프 개발과정을 엿보고 있으면 뭐랄까.. 정말 중요한 역량 보다는 단순한 포트폴리오 만들기에 치중된 커리큘럼이라는 생각이 든다. 포트폴리오를 만드는 것도 좋지만 앞으로 개발자로써 더 성장할 수 있는 발판을 만들어주는게 중요할 거 같은데.. 또 단시간 안에 취업을 할 수 있는 이력을 만들어주어야 하니.. 어려운 일이라고 생각한다. 그런 와이프님을 위해 회사 또는 시니어/리드 IOS 개발자가 신입 ios 개발자에게 요구하는 ..
-
Spring JPA 영속성 컨텍스트 그리고 OSIV
회사 블로그에 이미 기재한 글이지만 2023년 한 달에 두 번 글쓰기라는 목표를 정하게 된 계기인 JPA 영속성 컨텍스트와 OSIV에 대한 내용입니다. (회사 블로그 복붙) 저는 레일즈 개발만 주야장천 해오다 최근 Kotlin + Spring 프로젝트를 인계받게 됐고, 이 글은 전환 과정 중 JPA 영속성 콘텍스트를 제대로 이해하지 못해 발생한 문제를 분석한 글입니다. 발단 회사에서 Kotlin + Spring 으로 만들어져 있던 프로젝트를 인계받게 됐고, 첫 한 달은 큰 문제없이 유지보수 하며 개발할 수 있었습니다. 항상 사고는 초보 딱지를 뗀 다음에 온다더니.. 문제는 그 뒤에 발생했습니다. 기존 Spring Batch 에서 호출하도록 만들어져 있던 핵심 함수를 AWS SQS에서 호출되도록 변경했습니..