연합 DevTalk Seminar 지난 23년 8월 24일, 홍익대학교에 소속된 7개의 학회가 연합하여 연합 데브톡 세미나를 개최했습니다. 그리고 그중에는 제가 운영하는 B612도 포함되어 있습니다. 이전에 B612의 운영진 한 분을 연합 데브톡의 TF 팀으로 출장 보냈는데, 굉장히 잘 준비해주셨답니다. 신청폼이 나오자 마자 바로 신청했답니다. 그렇게 출장보내고 유기해놓고 있었는데, 중간중간 준비되고 있는 소식을 들으면서 굉장히 체계적으로 잘 준비되고 있는 게 느껴져서 많이 기대했습니다. 홍문관 지하 가람홀에서 진행되었습니다. 약 3-4백명 규모의 인원을 수용할 수 있는 시설인데, 사실 생각보다 많은 사람들이 모이지는 않아서 아쉬웠습니다. 약 80-100여 명 정도 모인 것 같았는데, 개강을 바로 앞둔 ..
Debounce와 Throttle 디바운스(Debounce)와 쓰로틀(Throttle)은 둘 다 함수의 연속적인 실행을 제한하는 목적을 갖고서 설계되었습니다. 그 중 Debounce는, 특정 기간 동안 함수의 실행을 모두 취소하고, 마지막 실행만 수행합니다. 반대로 Throttle은 함수 실행 후 특정 기간 동안 추가적인 함수의 재실행을 모두 취소합니다. 이 둘은 매우 비슷해보이지만 서로 다른 특성을 갖고 있는, 정해진 시간 동안 얼마나 많은 함수의 실행을 허가할 것인가에 대한 테크닉입니다. Debounce와 Throttle은 특히 Future와 Stream에 관련된 함수에서 자주 볼 수 있습니다. API 요청 시에 Debounce와 Throttle이 특히 유용하게 사용됩니다. 불필요하게 API 요청이 ..
이전 글 페이지네이션(Pagination) Flutter로 Cursor Pagination 구현하기 - 1. 상태 모델 및 Provider 구현 Flutter로 Cursor Pagination 구현하기 - 2. Pagination View 구현 실제로 적용해보기 지금까지 Pagination에 필요한 Provider 및 CursorPagination 상태, 그리고 View를 제작했습니다. 지금까지 만든 것들은 모두 일반화를 위한, 추상화된 클래스들입니다. 이러한 추상화 과정을 통해서, 많은 양의 중복된 코드를 줄일 수 있습니다. 그러나 이를 실제로 적용하는 것은 또다른 문제입니다. 실제로 Paginate를 하기 위해서는, http Request 등 서버로의 요청을 보내야 합니다. 추상화된 코드에서는 IBa..
이전 글 페이지네이션(Pagination) Flutter로 Cursor Pagination 구현하기 - 1. 상태 모델 및 Provider 구현 Pagination Common View (ListView) 이전 글에서 Pagination Provider를 구현하였습니다. 사실 이것으로 페이지네이션의 본질적인 부분은 끝이 난 것이 맞지만, 실제로는 View를 구현해야 하는 일이 남아 있습니다. 페이지네이션의 뷰가 모두 비슷하다고 가정을 한다면 이 역시 추상화할 수 있습니다. 여기서는 ListView 형태로 페이지네이션 뷰를 직접 구현하겠습니다. 참고 사항 본 글에서 코드를 보여줄 때, 일부러 앞 코드의 일부(함수 시그니처라든지, 중요 포인트 등)를 포함시켜서 보일 예정입니다. 코드의 전문을 보여주지 않아 ..
Flutter에서 Cursor Base Pagination 구현하기 이전 글: 페이지네이션(Pagination) 이전 글에서 페이지네이션의 개념에 대해서 알아보았고, 모바일에서는 주로 커서 기반 페이지네이션이 많이 사용된다는 것도 배웠습니다. 이제 직접 Flutter에서 커서 기반 페이지네이션을 구현해봅시다. 본 글은 코드팩토리 님의 플러터 중급 강의를 듣고 이를 저의 방식을 곁들여서 정리한 글입니다. 본 글은 페이지네이션을 일반화시킨 방법으로 적용할 것입니다. 그래서 모든 클래스와 메소드들이 굉장히 높은 차원으로 추상화되어 있습니다. 그렇기 때문에 왜 이렇게 되어 있는지 추적하기가 어려울 수 있습니다. 다음 글에서 이를 직접 각 모델에 맞추어서 적용함으로써 왜 이렇게 설계되었는지를 확인한다면, 좀 더 ..
Pagination의 개념 Pagination이란, 많은 데이터를 부분적으로 불러오는 기술을 의미한다. 우리가 일반적으로 데이터를 불러올 때, 만약에 모든 데이터를 불러오게 되면 매우 비효율적일 것이다. 데이터가 1억 개가 있다고 한다면, 사용자의 입장에서는 이 데이터를 모두 보지도 않는데 1억 개의 데이터가 모두 불러와질 때까지 기다려야 한다. 또한, 모든 데이터를 불러오게 되면 데이터를 보내는 데 드는 시간과 비용이 더 올라가게 되며, 이는 둘째치고 클라이언트 단에서 모든 데이터를 저장하기에 메모리가 부족할 것이다. 때문에 UX적 측면이나, 비용 효율화의 측면이나, 기술적인 한계의 측면에서 모든 데이터를 불러오기보다 일부의 데이터만을 불러오는 게 훨씬 효율적이다. 이것이 바로 Pagination의 개..
Google I/O Extended Seoul 지난 7월 29일 토요일 코엑스에서 열린 구글 I/O Extended Seoul에 다녀왔는데요, 어떤 발표들과 이벤트들이 있었는지 후기를 남깁니다. 이벤트들 Google I/O Extended Seoul에서는 다양한 이벤트 체험 부스 역시 준비되어 있습니다. 사실 쉬는 시간이 20분 밖에 되지 않는 것에 비해 참여자 수는 1000여 명 가까이 돼서, 이벤트 존을 모두 체험하는 것은 현실적으로 어려웠는데, 그 중에서 Photobooth에서 사진 하나 건지는 것으로 만족했습니다. 참고로 지도는 이렇게 되어 있습니다. 401호가 가장 으리으리하게 큽니다. 402호는 평범한 크기이고, 403호는 가보지 않아서 모르겠습니다. 참여하게 되면 이렇게 입장용 밴드를 붙여줍..
GDSC Hongik Devtalk #2 - 이더리움과 튜링 완전 본 글은 GDSC Hongik Devtalk 2회차 이더리움과 튜링 완전 발표 내용을 다시 정리한 글입니다. 22년 10월 31일, 그러니깐 이 글을 쓰는 시점을 기준으로 9개월 전에 발표한 내용을 다시 정리하고 있는 것인데요, 이전에 발표한 내용이라도 블로그에 한 번이라도 남기는 것도 좋고, 추억이기도 하고, 오랜만에 1학년 때 생각나서 적습니다. 이렇게 쓰고 보니 벌써 1년 가까이 되어 가네요 저 발표를 한 지가. 시간이 참 빠르다는 생각이 듭니다. 발표를 다시 들어보니 새내기 시절이여서 그런지 정말 긴장한 티가 팍팍 나네요. 발표의 주제는 이더리움과 튜링 완전입니다. 그리고 ‘비트코인과 이더리움의 비교를 중심으로’ 라는 부제가 달려 ..
물리적 데이터 모델링과 역정규화 물리적 데이터 모델링은 논리적 데이터 모델링 단계까지 설계한 데이터 모델을 실제로 구현하는 단계를 의미한다. 이제부터는 실제 데이터베이스의 성능이 중요해진다. 데이터베이스의 성능을 확인할 수 있는 지표는 다양하지만, 그 중 하나는 ‘Slow Query’가 발생하는 지점을 찾는 것이다. ‘MySQL find slow query’ 등으로 검색하면, 다양한 슬로우 쿼리를 찾기 위한 도구들과 방법들이 나타난다. 슬로우 쿼리를 발견했다면 이를 개선시킬 방법을 찾아야 한다. 여기서는 ‘역정규화’, 즉 정규화됐던 표를 성능적 이점을 얻기 위해 역정규화하는 방법을 소개한다. 그러나, 역정규화는 기본적으로 혹독한 대가를 치르게 한다. 역정규화를 함으로써 치르게 되는 대가를, 지불할 만 한..
논리적 데이터 모델링 논리적 데이터 모델링은, 개념적 데이터 모델링 단계에서 설계한 데이터 모델을 관계형 데이터베이스의 패러다임에 맞추어 옮기는 작업을 말한다. 논리적 데이터 모델링 단계에서 한 가지 중요한 유의점은, 이 과정에서는 구체적인 데이터베이스 제품을 선택하는 단계는 아니라는 점이며, 사양이나 성능 등의 문제는 신경쓰지 않는다. 논리적 데이터베이스 모델링 단계에서는 위와 같이, 개념적 데이터베이스 모델을 스키마 형태로 그린다. 위 사진이 데이터베이스 스키마의 한 예시이다. Mapping Rule (매핑 룰) 개념적 데이터베이스 모델링의 결과를 관계형 데이터베이스 이론에 근거하여 데이터베이스 스키마로 변환하는 과정을 말한다. ▢ Entity → Table ○ Attribute → Column ◇ ..
개념적 데이터 모델링 개념적 데이터 모델링이란? 업무라는 복잡한 현실속 문제에서, 특징을 추출하여 개념적인 데이터 모델을 세우는 작업이다. 업무와 논리적 데이터 모델링 단계를 연결하는 가교 역할을 하지만, 사실 개념적 데이터 모델링이 데이터 모델링의 절반 이상을 먹고 들어간다고 볼 수 있다. 이 단계에서 개념적 데이터 모델을 잘 설계한다면, 이후의 단계는 그냥 개념적 데이터 모델을 차근차근 컴퓨터 레벨로 옮기는 작업이기 때문이다. 개념적 데이터 모델링을 하는 이유이자 장점은 크게 두 가지가 존재한다. 현실에서 필요한 정보를 추출하는 필터의 역할 개념에 대해서 다른 사람과 대화할 수 있게 하는 언어의 역할 우리가 복잡한 현실을 모방할 때, 우리에게 필요한 정보만을 추출하고, 나머지 불필요한 부수적인 정보들..
본 글은 생활코딩 관계형 데이터 모델링 강의를 수강하고 이를 정리한 글입니다. 관계형 데이터 모델링이란? 현실은 믿을 수 없을 정도로 매우 복잡합니다. 이렇게 복잡한 현실의 문제를 해결하기 위해 동원된 컴퓨터라는 기계는, 매우 강력하지만 똑똑하지는 않은 기계입니다. 이 기계를 활용하기 위해서는, 현실의 문제를 기계가 이해할 수 있게 변형하는 작업이 필요합니다. 일반적으로 모델링이란 말은 ‘현실을 모방한 것’을 의미합니다. 현실은 매우 복잡하기에 이를 그대로 복제하는 것은 불가능하지만, 일반적으로 우리가 요구하는 어떤 기능을 만족하는 가상의 개념을 모방하는 것은, 비교적 매우 쉽습니다. Data Modeling이란 매우 복잡한 현실의 문제를 컴퓨터가 이해할 수 있는 데이터로 모방하는 것을 의미합니다. 인간..