전체 글

전체 글

    예비군 교육 훈련 :: 대전 유성구 예비군훈련장 후기 & 느낀점

    예비군 교육 훈련 :: 대전 유성구 예비군훈련장 후기 2022년 11월 예비군 훈련 후기를 공유하고자 한다! 나는 참고로 원격 수강을 안해서 오전 9시 ~ 오후 6시 동안 예비군 훈련을 했다. 유성구 예비군 훈련장은 교통이 불편해 택시로 이동하는 것을 추천한다. (예비군 가는 사람과 택시비 1/n하는 방법도 좋다) 예비군 훈련장에 도착하면 입구에 서서 간부님이 안내해주실 때까지 대기한다. 1. 분대별 1등으로 도착한 사람이 분대장이 된다 일찍 가면 일찍 끝내주는 주겠지 하는 마음으로 지나치게 일찍 갔다가 분대 내 1등으로 도착한 사람이 되었다. 분대장의 역할은 다음과 같다. 1. 이후 훈련에서 조교님들에게 훈련을 진행했음을 확인받는 수첩을 들고다녀야 한다. 2. 이후 훈련에서 종이에 적힌 지시사항을 육성..

    헬스 :: 치닝디핑 구매 후기 & 조립 꿀팁 / 일반인 홈짐 부위별 운동 꿀팁(헬창X)

    요즘은 헬스장 가기도 바쁘기도 하고, 집에서 하는 것이 편하다는 이유로 사람들이 홈짐을 많이 하는 것 같다. (집에서 운동한다는 게 어렵지만, 헬스 유튜버의 영향이 큰 것 같다) 헬태아 입장에서 미니 홈짐을 설치하게 된 과정과 시행착오를 공유해보려고 한다! 동기부여 유튜브를 보던 중 턱걸이 0개부터 꾸준히 운동해서 몸이 좋아진 유튜버를 보고 턱걸이 운동으로 전신 근육을 키우자는 마음을 가짐 문틀봉바(철봉) 네이버 쇼핑에서 눈팅하던 중 가성비있고 리뷰, 구매건수 많은 문틀봉 바를 사기로 결정했음! 문틀아 미안하다! (풀업과 이별) 예상치 못한 문제 발생! 이 문틀봉바를 문틀에 설치하고 풀업을 하면 문틀에 무게가 가해져 문틀 모서리에 접합부분이 살짝씩 벌어졌음ㅠ 작년 5월에 집전체(문틀까지 싹다 바꾸는) 인..

    역행자 :: 자청 / 무자본 창업 인사이트 / 베스트셀러

    책 읽기 독서 빈부 격차는 경제적 빈부 격차보다 무서운 것으로, 삶의 양극화를 만든다. 좋은 책을 읽는다는 것은 몇백 년 전에 살았던 가장 훌륭한 사람과 대화하는 것이다. - 데카르트 정말 좋은 책을 최대한 흡수한다면, 저자가 몇십 년에 걸쳐 어렵게 습득한 지식과 진리를 거저 얻는 것이다. 매일 조금이라도 책읽고 글쓰기 습관 만들기 오목이론 눈 앞의 이득과 소득에 집착하지 않고 장기적으로 두는 수 (ex 유튜브 등 채널 만들기) 기버이론 (역행자는 1을 받으면 2를 준다) 지난 1년간 자신이 어떤 기버 행동을 했는지 생각하기 https://becoming-linchpin.tistory.com/23 https://brunch.co.kr/@dongha-sohn/18 경제적 자유를 얻기 위한 5가지 공부법 1..

    클루지 :: 생각의 오류를 극복하기

    클루지란 클루지란, 서툴거나 세련되지 않은 해결책을 뜻하는 공학자들의 용어입니다. 필요에 의하여 만들어졌으나, 몬가 완벽하지 않고 엉성하게 그 기능을 하는 것들을 말합니다. 개리마커스는 진화심리학자로서 인간의 뇌는 진화과정이 빚어낸 기이한 산물인 클루지로써 체계적이지 않고 불완전한 작동을 한다고 이 책에서 설명하고 있습니다. 이러한 클루지스러운 뇌로 인하여 왜 인간이 잘못된 판단을 하는지, 왜 인간이 할일이 많은데도 컴퓨터 게임이나 다른 개인의 쓸데없이 하는 것들에 대한 이유를 진화 심리학자 입장에서 이해 하기 쉽게 설명하고 있습니다. 개리마커스는 인간의 뇌는 완벽하지 않으므로, 잘못된 행동을 유발하지 않도록 합리적으로 행동하고 잘못된 행동을 막을 수 있는 13가지 방법을 제시하였습니다. 틀짜기(fram..

    XCode + AppStore + iOS :: 외부 개발자에게 iOS 앱 개발권한, 배포권한 주는 방법 (Provisioning Profile, private key, .p12 인증서)

    배경 최근 iOS 프로젝트에서, 외부 개발자 입장으로 참여하여 Apple Login 추가, AppStore 배포를 할 일이 있었다. 프로젝트 오너가 [AppStore] - [사용자 및 액세스] 에서 나에게 관리자 권한을 주고, Provisioning Profile을 생성해서 제공했음에도 불구하고, 시뮬레이터에서는 앱이 빌드가 돼서 실행되는데, 1. 실기기 빌드 2. TestFlight에 업로드 이 두가지가 안되는 문제가 생겼다. 예전에는 앱 오너로부터 TestFlight 초대가 이메일로 오면 승인하고 Automatically Manage Signing 체크하면 팀이 보였는데, 이번 경우에는 Team이 뜨지 않아서 Provisioning Profile을 만들어서 Import 하여 개발 & 배포 권한을 얻어..

    AWS RDS 프리티어 요금 과다 청구 문제 해결 방법 :: Amazon Relational Database Service Provisioned Storage

    배경 AWS에 신규 계정을 생성한지 1달 정도 밖에 안됐는데, 지난 달에 4만원 가량의 요금이 나왔다. 그래서 지난 달에 백업 설정이 되어있어서 해제를 했었다. 그런데 이번달에 절반도 지나가지 않았는데, 예상 청구 금액이 12600원인 것을 보면, 백업 설정 문제가 아니였다. AWS Billing에서 청구 상세 내역을 확인해보니 다음과 같았다. Amazon Relational Database Service Provisioned Storage $0.131 per GB-month of provisioned gp2 storage running PostgreSQL ($ 8.15) 원인 의심가는 부분을 찾다가 보니, 스토리지 - 할당된 스토리지 문제였다. AWS RDS의 해당 인스턴스 (PostgreSQL)를 클..

    MSA(마이크로) + MA(모놀리식) :: 소프트웨어 아키텍쳐 장단점과 적용

    배경 서비스의 규모가 확장되고, 데이터 저장 및 통신을 클라우드를 통해 하는 요즘, 기존의 방식인 모놀리식과 대비되는 MSA가 대두되고 있다. 하지만 소규모 프로젝트나 대부분의 상황에서는 모놀리식 아키텍쳐도 합리적인 선택이 될 수 있다. 요구사항에 맞지 않는 아키텍쳐 선택은 오버 엔지니어링을 발생시켜 불필요한 작업을 초래할 수 있고 개발자들의 생산성을 저해할 수 있으므로 장단점을 파악한 후 충분히 고려하여 결정해야 할 것이다. 모놀리식 아키텍처 (Monolithic Architecture) - 전통적인 방식의 아키텍처이다. - 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 형태이다. - 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행된다. 따라서 애플리케이션의 한 프로세스에 대한 수요가..

    Node.js + bcrypt :: 회원가입 시 비밀번호 암호화하기 & 로그인 시 비밀번호 검증, 비교하기

    배경 회원가입 시 입력한 비밀번호가 그대로 데이터베이스에 저장되면, 데이터베이스 접속 정보가 노출이 되거나 유저 정보 유출 시 보안적으로 위험할 수 있다. 요구사항 1. 회원가입 시 비밀번호 암호화하기 2. 로그인 시 비밀번호 비교하여 로그인 성공하면 jwt 토큰 생성 및 발급하기 해결 Bcrypt는 레인보우 테이블 공격 방지를 위해 솔트(Salt)를 통합한 적응형 함수 중 하나이다. SHA 종류의 암호화는 GPU 연산에 유리한 32비트 논리 및 연산만 사용하기 때문에 GPU 연산을 이용한 공격에 취약하다. 그래서 Bcrypt 설계자는 Blowfish를 이용해 구현해서 이를 방지했다고 한다. 레인보우 테이블 : 해시 함수를 사용하여 변환 가능한 모든 해시 값을 저장시켜 놓은 표 솔트 : 데이터, 비밀번호..

    Node.js + TypeScript + nodemailer :: 이메일 인증번호 보내기

    배경 이메일 회원가입 시 해당 이메일을 가지고 있는지 파악하기 위해 이메일 인증번호를 보내는 API를 개발해야 했다. 요구사항 1. Node.js 서버에서 Query paramter로 이메일 정보를 받는다. 2. 해당 이메일로 3자리 인증번호를 보낸다. 3. response로 동일한 3자리 인증번호를 응답에 성공하면 code:200과 함께 data에 인증번호를 담아 보낸다.. curl http://localhost:3000/register/authcode?email=wks0968@gmail.com { "code": 200, "msg": "", "data": 263 } 해결 1. https://myaccount.google.com/security 에 접속해서 2단계 인증을 설정하고 앱 비밀번호를 생성한다...

    UI 디자인 :: 앱에 사용할 좋은 무료 아이콘 Reference

    https://www.flaticon.com/ 배경 크몽이나 배민 같은 요즘 앱들을 살펴보면, 아이콘을 사용하여 사용자가 직관적으로 이해할 수 있게 메뉴를 구성하는 경우가 많다. 그래서 체력 측정 앱 개발 도중 아이콘의 필요성을 느꼈지만, 디자이너에게 아이콘 외주를 줘야하는지에 대한 고민에 빠졌다. 요구사항 1. 아래의 체력 요인별 종목을 사용자가 직관적으로 이해할 수 있게끔 잘 표현해야 함. 2. 종목별 동작 특징을 잘 표현해야 함. 3. 너무 화려하거나 튀는 디자인은 제외함. 4. outline border의 존재 유무, 색감 등 통일성을 갖춰야 함. 해결 1. 대부분 아이콘이 영어로 검색하게 제공되어 있어, 측정 종목마다 영어로 검색하여 동작을 잘 설명하는 아이콘을 골랐다. 2. 텍스트만으로 표현하..

    Flutter :: 키보드 위에 버튼 고정시키는 방법 (Alignment.bottomCenter)

    https://youtube.com/shorts/u_hzF982xbI?feature=share 배경 초중고 학생들을위한 체력측정 앱 개발 중에, 키보드 위에 확인 버튼위젯을 고정할 일이 생겼는데 이슈들이 발생해서 정리하고자 한다. 요구사항 1. 키보드 바로 위에 '확인' 버튼이 있어야 함 2. 키보드에 입력 데이터가 가려지면 안됨 3. 버튼을 선택할 때 키보드가 없어져야 함 해결방법 double bottomViewInsets = MediaQuery.of(context).viewInsets.bottom; bool keyboardOn = bottomViewInsets != 0;// 키보드 존재 여부 판단 키보드가 올라가면 키보드의 높이만큼 bottomViewInsets이 증가하는 점을 이용해 키보드가 올라왔..

    Prisma + PostgreSQL :: 차세대 Node.js, TypeScript ORM 기술

    1. Prisma의 의미 Prisma는 차세대 Node.js, TypeScript ORM 기술로서, 미리 정의한 모델인 GraphQL 스키마를 기반으로 DB의 필드, 속성을 자동생성(CREATE TABLE) 해준다. 이해하기 쉬운 데이터 모델 작성, migration 자동화 기능, type safe 및 auto-completion 기능 덕분에 데이터베이스 작업 시 편리하다. 1.1. GraphQL의 의미와 장점 facebook에서 만든 Graph Query Language 로 어플리케이션 쿼리 언어로써, 기존의 REST API의 한계점을 극복하고자 나온 통신 규약이다. Node.js를 이용해, 데이터베이스에 접근하는 나만의 명령어를 만들고 (Query, Mutation, TypeDefs, resolver..

    디자인 영감을 받는 사이트 (디자이너 교수나 디자인 스튜디오 대표들이 많이 참고하는 곳!)

    1. 디자인/문화/예술 Creative Bloq https://www.creativebloq.com/ Creative Bloq | Art and Design Inspiration How to Photoshop on iPhone: edit and retouch on the move By Jason Parnell-Brookes published 12 September 22 Photoshop Learn how to use the Adobe Photoshop Express app for on-the-go photo editing. www.creativebloq.com 2. 디자인 Google Design https://design.google/ 3. 예술 Colossal https://www.thisiscolo..

    학식라이프 개인정보처리방침

    ('https://cheolheelee.tistory.com'이하 '개인정보처리방침')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2022년 8월 21부터 적용됩니다. 제1조(개인정보의 처리 목적) ('https://cheolheelee.tistory.com'이하 '개인정보처리방침')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이..

    모각코(모더나 팀) 6회차 학습목표/회고

    학습목표 목표 : 유지 보수하기 편리한 방식으로 코드 개선하기 1. Model 만들기 (알람 정보) fromMap method와 toMap method를 만들기 필드 추가하기 2. Folder Naming, File Naming기능별로 폴더를 만들고, 아래에 _screen.dart 만들기, 구성 요소는 components 폴더에 넣기 3. GetXController를 Singleton 방식으로 변경하기 ( 메모리 절약, 미리 생성한 인스턴스 활용 ) 최상단 위젯에서 Get.put을 한 후 Get.find를 사용하여 기존 인스턴스 활용하기 회고 목표 : 유지 보수하기 편리한 방식으로 코드 개선하기 1. Model 만들기 (알람 정보) fromMap method와 toMap method를 만들기 필드 추가하..

    모각코(모더나 팀) 5회차 학습목표/회고

    학습목표 1. 알람이 울릴 때 지정한 알람 소리로 울리는 기능 구현방법 찾아보기 회고 1. 알람이 울릴 때 지정한 알람 소리로 울리는 기능 구현방법 찾아보기 awesome_notification 라이브러리 사용 android res 폴더에 알람 소리 파일이 존재해야 한다. custom_sound notification channel 생성하기 channel group 생성하기 custom_sound notification channel에 notification 생성하여 알람 표시하기

    모각코(모더나 팀) 4회차 학습목표/회고

    학습목표 1. Firebase firestore CRUD 구현 및 테스트 내 알람 추가 기능을 위주로 firebase firestore에 데이터 쓰기/읽기/수정/삭제 구현해보기 회고 1. Firebase firestore CRUD 구현 및 테스트 내 알람 추가 기능을 위주로 firebase firestore에 데이터 쓰기/읽기/수정/삭제 구현해보기 alarm DB fields alarmId : document.id로 대체 alarmTime alarmDay alarmMemo firestore 저장 화면 Oracle, MySQL 같은 relational database는 보통 테이블에 PK인 id를 지정하는데, Cloud Firestore는 NoSQL database이므로 collection안에 docume..

    모각코(모더나 팀) 3회차 학습목표/회고

    학습목표 1. Firebase cloud messaging & foreground notification 기능 구현 앱이 실행 중일 때 notification 받도록 구현 2. Firebase cloud messaging & background notification 기능 구현 앱이 종료되었을 때 notification 받도록 구현 3. 특정 시간에 알람 설정 시, 앱이 실행되고 소리 또는 진동이 울리는 기능 구현 진동 모드, 무음 모드일 때 어떻게 처리하는지 찾아보기 회고 1. Firebase cloud messaging & foreground notification 기능 구현 앱이 실행 중일 때 notification 받도록 구현 2. Firebase cloud messaging & backgroun..

    모각코(모더나 팀) 2회차 학습목표/회고

    학습목표 1. 기본 기획 모바일 기획 2. Figma로 대략적인 느낌 디자인하기 3. Bottom navigation, Stack navigation 등 기본 UI 틀 구현 회고 1. 기획 모바일 기획 정리 2. Figma로 대략적인 느낌 디자인하기 3. Bottom navigation, Stack navigation 등 기본 UI 틀 구현 https://www.youtube.com/watch?v=P2G-yYPXlXU&ab_channel=DynamicCoding

    Flutter Firestore 구조

    Firestore 구조 CollectionReference DocumentReference

    2021-12-30 미팅 요약

    보호되어 있는 글입니다.

    Flutter + Firebase 채팅 기능 시연

    1. 채팅 기능 1.1. 채팅 어플 https://www.youtube.com/watch?v=ot5ctOZe2X0&ab_channel=DynamicCoding 1.2. 채팅 백엔드 https://www.youtube.com/watch?v=I6UCPL1svOA&ab_channel=DynamicCoding 1.3. 추가할 기능 채팅 UI 개선 말풍선 크기를 채팅 메시지와 맞게 수정 메시지가 1개 이상인 채팅방만 보이도록 수정 카카오 로그인 uid 사용 대화 상대방 검색 시 부분 문자열로도 검색 가능하도록 수정 2. 카카오 로그인 2.1. pub.dev 라이브러리 https://pub.dev/packages/kakao_flutter_sdk kakao_flutter_sdk | Flutter Package A f..

    Flutter Devtools 개념 이해

    1. Flutter Devtools 개념 이해 1) Flutter devtools 설치 Flutter devtools 사용 사진 Flutter devtools의 기능 Flutter 앱의 UI 레이아웃과 상태를 검사 Flutter 앱에서 UI 버벅거림 성능 문제를 진단 Flutter 또는 Dart 명령줄 앱의 소스 수준 디버깅 Flutter 또는 Dart 명령줄 앱에서 메모리 문제를 디버그 실행 중인 Flutter 또는 Dart 명령줄 앱에 대한 일반 로그 및 진단 정보 확인 Flutter devtools 설치 (VS code) VS Code 명령 팔레트에서 Dart: Open DevTools 명령 입력 Terminal에서 devtools 설치 flutter pub global activate devtoo..