전체 글

공부하거나 삽질한 내용을 정리하는 블로그입니다.
· Swift
[ 조건문 ] 조건에는 항상 Bool 타입이 들어와야 한다. if - else 구문 if (condition) { // 조건에 괄호는 생략 가능 statements } else if (condition) { statements } else { statements } let someInt = 100 if someInt 100 { print("100 초과") } else { print("100임ㅋ") } // 100임ㅋ switch 구문 case문에서 명시적으로 break를 안적어줘도 자동으로 break를 해준다. default 부분은 꼭 작성해주어야 한다. switch value { case pattern: code defaul..
· Swift
[ 함수 선언과 호출 ] 반환 값이 있는 함수 func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> 반환타입 { 함수 구현부 return 반환값 } func sum(a: Int, b: Int) -> Int { return a + b } 반환 값이 없는 함수 func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> Void { 함수 구현부 return } func printMyName(name: String) -> Void { print(name) } // Void 아예 생략 가능 func printMyName(name: String) { print(name) } [ 함수 고급 ] 매개변수 기본값 설정 func 함수이름(매개변수..
· Swift
[ 상수와 변수 ] 상수(변경 가능) 선언 키워드 let 변수(변경 불가능) 선언 키워드 var # 상수 let 이름: 타입 = 값 # 변수 var 이름: 타입 = 값 # 상수, 변수 모두 차후 할당 가능 var nickName: String nickName = "kybeen" 값의 타입이 명확하다면 타입은 생략 가능한데 굳이?? 나는 확실한게 좋기 때문에 이런거 생략 안한다. ※ 참고로 Swift에서는 이름 규칙으로 CamelCase 방식을 사용한다. 함수, 메서드, 변수, 상수 등 : 소문자로 시작 클래스, 구조체, 열거형 등 타입 이름 : 대문자로 시작 [ 기본 데이터 타입 ] Bool : 부울 (false, true만 되고 0과1은 안됨) Int : 64bit 정수형 (양수, 음수, 0) UInt..
· Swift
Swift의 기초 문법을 공부하기 위해 간단한 swift 코드를 실행해 볼 수 있는 playground를 사용해보자 Xcode 실행 후 File -> New -> Playground 클릭 간단한 코드만 실행해 볼 것이기 때문에 Blank로 선택해준다. 이후 원하는 경로에 playground 파일 이름을 넣고 생성해주면 아래와 같은 화면이 나오는데 여기서 코드를 작성해주면 된다. UIKit은 당장 사용 안하니 주석 처리해주고, 코드를 작성해보자. 코드 옆의 파란색 재생 버튼을 눌러주면 코드가 실행된다. ( 실행 단축키 : Shift + Command + Enter ) 하단에 실행 결과가 나타나고, 우측에는 값이 표시된다. 단축키 변경 Xcode -> Preference -> Key Buildings에서 R..
· Django
윈도우 노트북에 있던 장고 프로젝트를 맥북으로 옮기면서 맥북에 Django를 설치해주려고 한다. 파이썬은 설치가 되어 있다고 가정하고 글을 작성한다. 개발환경을 분리하기 위해 가상 환경을 만들어주자. Python의 virtualenv는 어플리케이션별로 독립된 가상 환경을 사용할 수 있게 해준다. 특정 가상환경에 장고를 설치해서 다른 어플리케이션과의 버전 꼬임을 방지해주려고 한다. 윈도우 노트북에서 장고 프로젝트를 여러개 옮겨오긴 했는데, 윈도우에서는 전역으로 Django 3.2 버전을 설치해서 사용했기 때문에 한 디렉토리에 장고 프로젝트를 모두 넣어주고 이 디렉토리를 Django 3.2 버전용 가상 환경으로 사용하려고 한다. 1. virtualenv 설치 pip3 install virtualenv 2. ..
· Django
이번에는 리액트 말고, 장고 프로젝트에서 사용하는 API KEY를 숨겨보자. 프로젝트에서 트위터 API를 사용해서 최근의 검색 결과를 받아오는 작업이 필요했다. 근데 구글링 해보니 트위터 API를 사용하는 글이 다 node.js로 백엔드 서버에서 사용하는 경우였고, 프론트엔드(브라우저)에서 사용하면 트위터 API 서버 측에서 막아놔서 CORS 에러가 나는 것 같았다. 그래서 해당 API는 장고 백엔드 서버에서 호출하게 되었고, 팀원분께서 발급받은 BEARER_TOKEN 을 사용하였다. BEARER_TOKEN 역시 깃허브에 업로드 되면 안되기 때문에, .gitignore에 추가해 주어야 한다. 나는 아래와 같이 진행해주었다. 1. secrets.json 파일을 만들기 secrets.json 이라는 이름의 ..
· React
개발을 하다 보면 여러 플랫폼의 API나 open api 등을 사용하게 되면서 API KEY를 발급받게 된다. API KEY는 각 사용자마다 발급되는 고유한 키이기 때문에 깃허브 등에 프로젝트를 업로드 할 때, .gitignore에 추가해서 public 저장소에 올라가지 않도록 해 줄 필요가 있다. 이번에 React를 사용하여 개발하면서 서울시 실시간 혼잡도 정보를 받아오기 위해 발급한 API KEY를 .gitignore에 추가해보았다. 1. dotenv 설치 먼저 dotenv를 설치해준다. (이거 설치 안하고 진행하니까 안됐음) yarn add dotenv npm install --save dotenv 2. react-create-app으로 생성한 프로젝트 루트폴더에(src폴더랑 같은 계층) .env ..
· React
프로젝트를 진행하면서 페이지네이션 기능이 필요해서 페이지네이션을 직접 구현해보았다. 리액트 페이지네이션 라이브러리가 다양하게 있는 것 같은데 그냥 직접 구현해봤다... (라이브러리 쓸 걸 그랬나) 하단 블로그 글을 많이 참고하며 리액트 state에 맞게 바꿔서 구현해봤다. https://min-kyung.tistory.com/30 [Javascript] 페이지네이션 구현하기 To do list 페이지네이션 구현 json-server를 활용해서 페이지네이션 구현하겠습니다 json-server: https://github.com/typicode/json-server 페이지네이션을 구현하기 위한 설정값은 총 4개가 필요합니다 currentPage: min-kyung.tistory.com 스타일은 좀 더 수정이..
· React
프로젝트를 진행하면서 사용자의 취향 키워드를 수정하는 화면에서 아래와 같은 식으로 클릭한 요소를 표시할 수 있도록 작업 중이었다. 코드의 재사용성을 높여주고, 반복되는 작업을 줄이기 위해 각 키워드 카테고리들을 따로 컴포넌트로 만들어서 props를 통해 해당하는 이미지와 state, setState함수 등을 전달하도록 해주려고 했다. 기존에는 각 요소들이 한식 와 같이 구성되어 있었다. 별도의 컴포넌트로 분리할 경우 각 키워드 카테고리 별로 props로 전달해줄 값은 카테고리 이름 img태그의 src속성값 img태그의 alt속성값 해당 카테고리의 state 해당 카테고리 state의 setState함수 5가지이다. 그래서 아래와 같이 컴포넌트를 만들어주고 // [ 각 키워드 재사용 컴포넌트 ] const..
· Git
git을 통해 상태 관리를 하다 보면 중요한 내용(계정 정보, API Key 등)은 깃허브 같은 원격 저장소에 업로드 하지 않는 것이 좋다. 나같은 경우는 이번에 빅프로젝트를 진행하면서 장고 프로젝트의 DB로 SQLite를 사용하고 있었다. 하지만 SQLite에서는 db.sqlite3이라는 이름의 파일 하나로 DB를 관리했기 때문에 로컬에서만 사용 가능했고, 이 프로젝트를 통째로 깃허브에 푸시해놨다가 다른 팀원분의 db.sqlite3 파일과 충돌이 생겼다. 이진 파일 형태라서 직접 conflict를 잡아줄 수도 없기 때문에 dq.sqlite3 파일은 제외하고 푸시를 하기로 했다. 각자의 로컬 환경에서만 db.sqlite3을 사용하면서 확인하고, 최종 단계에서는 한명이 작업하거나 다른 db를 사용해야 할 ..
kybeen
기록하레이