SCRIPTS BY
close
프로필 배경
프로필 로고

SCRIPTS BY

  • 분류 전체보기 (76)
    • C++ (19)
    • Flutter, Dart (13)
      • Flutter (11)
      • Dart (2)
    • Database (8)
    • Web (5)
    • 회고록 (6)
    • 개발일지 (6)
    • Review (7)
      • Books (2)
      • Conference & Seminar (4)
      • IT Products (1)
    • Notion (2)
    • Algorithms (3)
    • Computer Science (6)
  • 홈
  • 방명록
정렬 알고리즘의 시간 복잡도 증명 - 삽입, 퀵, 머지, 힙 정렬

정렬 알고리즘의 시간 복잡도 증명 - 삽입, 퀵, 머지, 힙 정렬

안녕하세요. 이번 글에서는 여러 정렬 알고리즘의 시간 복잡도를 증명해보겠습니다. 혹시 자료구조를 배우시는 분들이 계시다면, 시험볼 때 참고하시면 좋을 것 같습니다. 이 글은 $\LaTeX$ 문법이 잔뜩 적용되어 있어서, MathJax 스킨이 적용되어야 편하게 보인답니다. 혹시 Tistory 모바일 앱이나, 혹은 모바일 페이지 주소(nx006.tistory.com/m/67)로 접속이 되었을 경우, 인터넷 브라우저(Tistory 앱 X)에서 여기 주소로 다시 접속해주세요: https://nx006.tistory.com/67 정렬 알고리즘의 종류 이번 글은 정렬 알고리즘의 종류에 대해서 다루는 글은 아닙니다. 여기서는 간략하게 소개만 하고 넘어가겠습니다. 가장 대중적으로 많이 사용되는 정렬 알고리즘은 시간 복..

  • format_list_bulleted Algorithms
  • · 2023. 9. 1.
  • textsms
Flutter로 Flutter 소개 발표 자료 만들기

Flutter로 Flutter 소개 발표 자료 만들기

Flutter 소개 자료 B612 동아리에서 모바일 세션으로 참여하고 있는데, 각 세션은 정기 모임 활동에서 세션 발표를 해야 한다. 모바일 세션의 첫 발표는 내가 맡았다. Flutter에 대해서 소개하는 임무를 맡았다. 나름 모바일 세션이고 Flutter를 소개하는 자리인데 심심하게 발표를 시작하고 싶지 않았다. 그래서 Flutter를 소개하는 발표 자료를 Flutter로 만들기로 했다. 발표 자료 기획하기 우선 발표 자료부터 기획해 보자. 다행히 이는 이미 준비가 되어 있다. 지난 2주 동안 정기 모임 과제로 WIL을 작성했기에, 이를 바탕으로 구성하면 된다. 지난 WIL에서의 내용을 압축하면 다음과 같다. Flutter 소개 Cross Platform Framework iOS, Android, We..

  • format_list_bulleted 개발일지
  • · 2023. 8. 28.
  • textsms
홍익대학교 컴퓨터공학과 연합 DevTalk Seminar #1 후기

홍익대학교 컴퓨터공학과 연합 DevTalk Seminar #1 후기

연합 DevTalk Seminar 지난 23년 8월 24일, 홍익대학교에 소속된 7개의 학회가 연합하여 연합 데브톡 세미나를 개최했습니다. 그리고 그중에는 제가 운영하는 B612도 포함되어 있습니다. 이전에 B612의 운영진 한 분을 연합 데브톡의 TF 팀으로 출장 보냈는데, 굉장히 잘 준비해주셨답니다. 신청폼이 나오자 마자 바로 신청했답니다. 그렇게 출장보내고 유기해놓고 있었는데, 중간중간 준비되고 있는 소식을 들으면서 굉장히 체계적으로 잘 준비되고 있는 게 느껴져서 많이 기대했습니다. 홍문관 지하 가람홀에서 진행되었습니다. 약 3-4백명 규모의 인원을 수용할 수 있는 시설인데, 사실 생각보다 많은 사람들이 모이지는 않아서 아쉬웠습니다. 약 80-100여 명 정도 모인 것 같았는데, 개강을 바로 앞둔 ..

  • format_list_bulleted Review/Conference & Seminar
  • · 2023. 8. 25.
  • textsms
Session VS Token Authentication - feat. JWT 기술

Session VS Token Authentication - feat. JWT 기술

Authentication 앱을 만들 때 회원가입/로그인 기능을 구현해야 할 때가 있습니다. 인증 및 인가된 사용자에게 앱의 기능을 사용할 수 있게 하기 위해서는, 로그인이라는 Authentication(인증) 기능을 거치게 됩니다. 클라이언트 단에서 다음과 같이 서버로 로그인 정보를 POST로 보냅니다(로그인 시에는 보통 POST로 보냅니다). { "username": "nx006", "password": "q1w2e3r4!" } 그렇다면 서버에서는 이 정보가 맞는지를 검사하고, 유저 정보가 올바르고 권한이 있다면 인가(Permission)를 내줍니다. 이때 매번 우리가 서버로 요청을 보낼 때마다 아이디와 비밀번호를 입력하진 않습니다. 이때 앱을 실행할 때마다 사용자가 로그인을 하게끔 앱을 설계하는 것..

  • format_list_bulleted Web
  • · 2023. 8. 18.
  • textsms
디바운스와 쓰로틀(Debounce & Throttle) - 최적화를 도와주는 기법

디바운스와 쓰로틀(Debounce & Throttle) - 최적화를 도와주는 기법

Debounce와 Throttle 디바운스(Debounce)와 쓰로틀(Throttle)은 둘 다 함수의 연속적인 실행을 제한하는 목적을 갖고서 설계되었습니다. 그 중 Debounce는, 특정 기간 동안 함수의 실행을 모두 취소하고, 마지막 실행만 수행합니다. 반대로 Throttle은 함수 실행 후 특정 기간 동안 추가적인 함수의 재실행을 모두 취소합니다. 이 둘은 매우 비슷해보이지만 서로 다른 특성을 갖고 있는, 정해진 시간 동안 얼마나 많은 함수의 실행을 허가할 것인가에 대한 테크닉입니다. Debounce와 Throttle은 특히 Future와 Stream에 관련된 함수에서 자주 볼 수 있습니다. API 요청 시에 Debounce와 Throttle이 특히 유용하게 사용됩니다. 불필요하게 API 요청이 ..

  • format_list_bulleted Flutter, Dart/Flutter
  • · 2023. 8. 14.
  • textsms
개발 시간을 줄여주는 코드 포매터(Code Formatter)와 그 종류(Clang-Format, Black 등)

개발 시간을 줄여주는 코드 포매터(Code Formatter)와 그 종류(Clang-Format, Black 등)

코드 포매터란? 코드 포매터(Code Formatter)란 정해진 규칙(코딩 컨벤션)에 맞추어서 코드를 정렬하는 도구를 말합니다. 많은 기업들에서는 정해진 코딩 스타일과 컨벤션이 있는데, 이에 맞추어서 자동으로 코드를 정렬하거나, 혹은 보기 좋게 꾸밀 수 있습니다. 코딩 스타일을 따르는 것은 매우 중요합니다. 코드는 쓰는 횟수보다 읽는 횟수가 훨씬 더 많으므로, 코드는 가독성을 위해서 최대한 보기 좋게 작성되어야 합니다. 코딩 스타일은 코드의 가독성을 높이는데 아주 중요한 ‘약속’입니다. 예를 들어 어떤 팀 내에서 띄어쓰기 간격을 4칸으로 하는 것에 대해 정했으면, 모든 팀원이 이에 따라야 합니다. 만약에 어느 한 팀원이 띄어쓰기 간격을 두 칸으로 해놓는다면, 보는 이로 하여금 통일되지 않은 코딩 스타일..

  • format_list_bulleted C++
  • · 2023. 8. 12.
  • textsms
Flutter로 Cursor Pagination 구현하기 - 3. Pagination 실제로 적용해보기

Flutter로 Cursor Pagination 구현하기 - 3. Pagination 실제로 적용해보기

이전 글 페이지네이션(Pagination) Flutter로 Cursor Pagination 구현하기 - 1. 상태 모델 및 Provider 구현 Flutter로 Cursor Pagination 구현하기 - 2. Pagination View 구현 실제로 적용해보기 지금까지 Pagination에 필요한 Provider 및 CursorPagination 상태, 그리고 View를 제작했습니다. 지금까지 만든 것들은 모두 일반화를 위한, 추상화된 클래스들입니다. 이러한 추상화 과정을 통해서, 많은 양의 중복된 코드를 줄일 수 있습니다. 그러나 이를 실제로 적용하는 것은 또다른 문제입니다. 실제로 Paginate를 하기 위해서는, http Request 등 서버로의 요청을 보내야 합니다. 추상화된 코드에서는 IBa..

  • format_list_bulleted Flutter, Dart/Flutter
  • · 2023. 8. 9.
  • textsms
Flutter로 Cursor Pagination 구현하기 - 2. Pagination View 구현

Flutter로 Cursor Pagination 구현하기 - 2. Pagination View 구현

이전 글 페이지네이션(Pagination) Flutter로 Cursor Pagination 구현하기 - 1. 상태 모델 및 Provider 구현 Pagination Common View (ListView) 이전 글에서 Pagination Provider를 구현하였습니다. 사실 이것으로 페이지네이션의 본질적인 부분은 끝이 난 것이 맞지만, 실제로는 View를 구현해야 하는 일이 남아 있습니다. 페이지네이션의 뷰가 모두 비슷하다고 가정을 한다면 이 역시 추상화할 수 있습니다. 여기서는 ListView 형태로 페이지네이션 뷰를 직접 구현하겠습니다. 참고 사항 본 글에서 코드를 보여줄 때, 일부러 앞 코드의 일부(함수 시그니처라든지, 중요 포인트 등)를 포함시켜서 보일 예정입니다. 코드의 전문을 보여주지 않아 ..

  • format_list_bulleted Flutter, Dart/Flutter
  • · 2023. 8. 8.
  • textsms
Flutter로 Cursor Pagination 구현하기 - 1. 상태 모델 및 Provider 구현

Flutter로 Cursor Pagination 구현하기 - 1. 상태 모델 및 Provider 구현

Flutter에서 Cursor Base Pagination 구현하기 이전 글: 페이지네이션(Pagination) 이전 글에서 페이지네이션의 개념에 대해서 알아보았고, 모바일에서는 주로 커서 기반 페이지네이션이 많이 사용된다는 것도 배웠습니다. 이제 직접 Flutter에서 커서 기반 페이지네이션을 구현해봅시다. 본 글은 코드팩토리 님의 플러터 중급 강의를 듣고 이를 저의 방식을 곁들여서 정리한 글입니다. 본 글은 페이지네이션을 일반화시킨 방법으로 적용할 것입니다. 그래서 모든 클래스와 메소드들이 굉장히 높은 차원으로 추상화되어 있습니다. 그렇기 때문에 왜 이렇게 되어 있는지 추적하기가 어려울 수 있습니다. 다음 글에서 이를 직접 각 모델에 맞추어서 적용함으로써 왜 이렇게 설계되었는지를 확인한다면, 좀 더 ..

  • format_list_bulleted Flutter, Dart/Flutter
  • · 2023. 8. 7.
  • textsms
페이지네이션(Pagination)

페이지네이션(Pagination)

Pagination의 개념 Pagination이란, 많은 데이터를 부분적으로 불러오는 기술을 의미한다. 우리가 일반적으로 데이터를 불러올 때, 만약에 모든 데이터를 불러오게 되면 매우 비효율적일 것이다. 데이터가 1억 개가 있다고 한다면, 사용자의 입장에서는 이 데이터를 모두 보지도 않는데 1억 개의 데이터가 모두 불러와질 때까지 기다려야 한다. 또한, 모든 데이터를 불러오게 되면 데이터를 보내는 데 드는 시간과 비용이 더 올라가게 되며, 이는 둘째치고 클라이언트 단에서 모든 데이터를 저장하기에 메모리가 부족할 것이다. 때문에 UX적 측면이나, 비용 효율화의 측면이나, 기술적인 한계의 측면에서 모든 데이터를 불러오기보다 일부의 데이터만을 불러오는 게 훨씬 효율적이다. 이것이 바로 Pagination의 개..

  • format_list_bulleted Flutter, Dart/Flutter
  • · 2023. 8. 6.
  • textsms
네이버 클라우드를 통한 클라우드 & DevOps 스터디 중간 점검 후기

네이버 클라우드를 통한 클라우드 & DevOps 스터디 중간 점검 후기

스터디를 하게 된 배경 B612라는 개발 소모임을 운영하고 있다. 지난 4월 B612는 Naver Cloud Platform에서 운영하는 주니어 개발자 지원 프로그램 Green Developers와 정식으로 제휴를 체결하고 소속 단체로 활동하고 있다. Green Developers(이하 그린데브)가 주는 주요 혜택 중 하나는 NCP에서 사용 가능한 클라우드 크레딧의 제공이다. 신규 가입 시 제공하는 10만 원의 크레딧과 더불어 제휴 크레딧으로 최대 90만 원까지 제공하는데, 새롭게 클라우드 서비스를 이용해서 서비스를 제공하고자 하는 이들에게 도움을 줄 수 있는 비용이다. 또한 그린데브가 주는 다른 혜택으로는 교육 커리큘럼 가이드가 있다. 사실 그리 거창한 것은 아닌데, NCP에서 제공하는 가이드 라인을 ..

  • format_list_bulleted 회고록
  • · 2023. 8. 4.
  • textsms
Google I/O Extended Seoul 2023 후기

Google I/O Extended Seoul 2023 후기

Google I/O Extended Seoul 지난 7월 29일 토요일 코엑스에서 열린 구글 I/O Extended Seoul에 다녀왔는데요, 어떤 발표들과 이벤트들이 있었는지 후기를 남깁니다. 이벤트들 Google I/O Extended Seoul에서는 다양한 이벤트 체험 부스 역시 준비되어 있습니다. 사실 쉬는 시간이 20분 밖에 되지 않는 것에 비해 참여자 수는 1000여 명 가까이 돼서, 이벤트 존을 모두 체험하는 것은 현실적으로 어려웠는데, 그 중에서 Photobooth에서 사진 하나 건지는 것으로 만족했습니다. 참고로 지도는 이렇게 되어 있습니다. 401호가 가장 으리으리하게 큽니다. 402호는 평범한 크기이고, 403호는 가보지 않아서 모르겠습니다. 참여하게 되면 이렇게 입장용 밴드를 붙여줍..

  • format_list_bulleted Review/Conference & Seminar
  • · 2023. 8. 2.
  • textsms
이더리움과 튜링 완전(비트코인과 이더리움의 차이) - GDSC Devtalk 발표 셀프 리뷰

이더리움과 튜링 완전(비트코인과 이더리움의 차이) - GDSC Devtalk 발표 셀프 리뷰

GDSC Hongik Devtalk #2 - 이더리움과 튜링 완전 본 글은 GDSC Hongik Devtalk 2회차 이더리움과 튜링 완전 발표 내용을 다시 정리한 글입니다. 22년 10월 31일, 그러니깐 이 글을 쓰는 시점을 기준으로 9개월 전에 발표한 내용을 다시 정리하고 있는 것인데요, 이전에 발표한 내용이라도 블로그에 한 번이라도 남기는 것도 좋고, 추억이기도 하고, 오랜만에 1학년 때 생각나서 적습니다. 이렇게 쓰고 보니 벌써 1년 가까이 되어 가네요 저 발표를 한 지가. 시간이 참 빠르다는 생각이 듭니다. 발표를 다시 들어보니 새내기 시절이여서 그런지 정말 긴장한 티가 팍팍 나네요. 발표의 주제는 이더리움과 튜링 완전입니다. 그리고 ‘비트코인과 이더리움의 비교를 중심으로’ 라는 부제가 달려 ..

  • format_list_bulleted Computer Science
  • · 2023. 7. 27.
  • textsms
관계형 데이터 모델링 - 물리적 데이터 모델링과 역정규화

관계형 데이터 모델링 - 물리적 데이터 모델링과 역정규화

물리적 데이터 모델링과 역정규화 물리적 데이터 모델링은 논리적 데이터 모델링 단계까지 설계한 데이터 모델을 실제로 구현하는 단계를 의미한다. 이제부터는 실제 데이터베이스의 성능이 중요해진다. 데이터베이스의 성능을 확인할 수 있는 지표는 다양하지만, 그 중 하나는 ‘Slow Query’가 발생하는 지점을 찾는 것이다. ‘MySQL find slow query’ 등으로 검색하면, 다양한 슬로우 쿼리를 찾기 위한 도구들과 방법들이 나타난다. 슬로우 쿼리를 발견했다면 이를 개선시킬 방법을 찾아야 한다. 여기서는 ‘역정규화’, 즉 정규화됐던 표를 성능적 이점을 얻기 위해 역정규화하는 방법을 소개한다. 그러나, 역정규화는 기본적으로 혹독한 대가를 치르게 한다. 역정규화를 함으로써 치르게 되는 대가를, 지불할 만 한..

  • format_list_bulleted Database
  • · 2023. 7. 15.
  • textsms
관계형 데이터 모델링 - 논리적 데이터 모델링과 정규화(1NF, 2NF, 3NF)

관계형 데이터 모델링 - 논리적 데이터 모델링과 정규화(1NF, 2NF, 3NF)

논리적 데이터 모델링 논리적 데이터 모델링은, 개념적 데이터 모델링 단계에서 설계한 데이터 모델을 관계형 데이터베이스의 패러다임에 맞추어 옮기는 작업을 말한다. 논리적 데이터 모델링 단계에서 한 가지 중요한 유의점은, 이 과정에서는 구체적인 데이터베이스 제품을 선택하는 단계는 아니라는 점이며, 사양이나 성능 등의 문제는 신경쓰지 않는다. 논리적 데이터베이스 모델링 단계에서는 위와 같이, 개념적 데이터베이스 모델을 스키마 형태로 그린다. 위 사진이 데이터베이스 스키마의 한 예시이다. Mapping Rule (매핑 룰) 개념적 데이터베이스 모델링의 결과를 관계형 데이터베이스 이론에 근거하여 데이터베이스 스키마로 변환하는 과정을 말한다. ▢ Entity → Table ○ Attribute → Column ◇ ..

  • format_list_bulleted Database
  • · 2023. 7. 14.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (76)
    • C++ (19)
    • Flutter, Dart (13)
      • Flutter (11)
      • Dart (2)
    • Database (8)
    • Web (5)
    • 회고록 (6)
    • 개발일지 (6)
    • Review (7)
      • Books (2)
      • Conference & Seminar (4)
      • IT Products (1)
    • Notion (2)
    • Algorithms (3)
    • Computer Science (6)
최근 글
인기 글
최근 댓글
태그
  • #Cursor-based Pagination
  • #Flutter
  • #DevTalk 후기
  • #Flutter 페이지네이션 구현
  • #모던 C++
  • #MySQL
  • #관계형 데이터 베이스 모델링
  • #GDSC
  • #C++
  • #모던C++
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바