본문 바로가기

분류 전체보기317

JWT 토큰(Json Web Token)이란? 📝JWT 토큰(Json Web Token)이란? JWT는 JSON Web Token의 약자로 웹 표준 JSON 형태의 데이터를 사용하여 클라이언트와 서버 간에 정보를 안전하게 전송할 수 있도록 하는 인증 방식 중 하나이다 JWT는 사용자 인증에 매우 유용하다 사용자가 로그인을 하면 서버는 JWT 토큰을 발급하고 이후 사용자가 서버에 요청을 보낼 때마다 JWT 토큰을 함께 전송하며, 서버는 해당 JWT 토큰의 유효성을 검증하여 사용자를 인증한다 이 방식은 세션을 사용하는 방식보다 더 간편하며 서버 부하를 줄일 수 있다 또한 JWT는 토큰 자체에 사용자 정보를 저장하기 때문에 서버에서 사용자 정보를 저장하고 관리할 필요가 없다 이를 통해 서버 부하를 줄이고, 사용자 데이터 보호에도 효과적 ✏️✏️✏️✏️✏️.. 2023. 4. 7.
DB에서 인덱스를 사용하는 이유? 📝DB에서 인덱스를 사용하는 이유? 1. 빠른 검색 속도 → 인덱스를 사용하면 DB가 더 빠르게 데이터를 찾아올 수 있습니다 인덱스는 특정 컬럼의 값을 기준으로 정렬되어 있기 때문에 검색 시에 해당 컬럼을 기준으로 검색을 할 수 있습니다 이렇게 되면 데이터를 찾기 위해 전체 테이블을 스캔하지 않고도 검색 결과를 빠르게 찾아낼 수 있습니다 2. 검색 쿼리 최적화 → 인덱스를 사용하면 검색 쿼리를 최적화할 수 있습니다 인덱스를 설정하면 DB가 쿼리 실행 계획을 최적화하고 실행 속도를 높일 수 있습니다 또한 인덱스를 사용하면 조인 등의 연산에서도 빠른 속도를 보장할 수 있습니다 3. 데이터 일관성 유지 → 인덱스를 사용하면 DB에서 데이터 일관성을 유지할 수 있습니다 인덱스는 데이터를 빠르게 찾아오는 용도로 .. 2023. 4. 5.
RDB와 NoSQL의 차이점 📝RDB(Relational Database)와 NoSQL(Not only SQL)의 차이점 ✏️RDB? → 관계형 데이터베이스의 약자로, 데이터를 저장하고 관리하기 위한 데이터베이스 데이터를 테이블 형태로 저장하고, 각 테이블은 관계를 가지며, 관계는 외래키로 정의 스키마 기반으로 데이터를 저장하기 때문에 데이터의 구조가 변화될 경우 스키마 변경이 필요 ✏️NoSQL? → Not Only SQL이라는 뜻으로, 관계형 데이터베이스(RDB)가 아닌 다른 형태의 데이터베이스 다양한 형식의 데이터를 저장할 수 있다 (문서, 그래프, 키-값 등) 관계형 데이터베이스와는 다르게 스키마가 없거나 유연한 스키마를 가진다 수평적 확장(Scaling out)이 가능 데이터의 특성에 따라 RDB와 NoSQL 중 적합한 데.. 2023. 4. 5.
프로세스(Process)와 스레드(Thread)의 차이점 📝프로세스(Process)와 스레드(Thread)의 차이점 프로세스(Process)는 실행 중인 프로그램을 의미한다 메모리 상에서 독립적으로 할당되며, 각각의 프로세스는 자신만의 고유한 주소 공간(메모리)을 갖고 있다 즉, 다른 프로세스에 영향을 받지 않고 독립적으로 실행될 수 있는 단위 스레드(Thread)는 프로세스 내부에서 실행되는 작업의 단위이다 한 프로세스 내부에는 여러 개의 스레드가 존재할 수 있으며, 이 스레드들은 동시에 실행될 수 있다 스레드는 프로세스 내부의 자원을 공유하므로, 다른 스레드에 영향을 받을 수 있다 프로세스와 스레드는 각각 독립적인 실행 단위이다 프로세스는 스스로의 메모리 공간을 가지며, 자신만의 작업을 처리하고 스레드는 같은 프로세스 내에서 다른 스레드와 공유된 자원(메모.. 2023. 4. 5.
HTTP Method와 상태코드 📝HTTP Method와 상태코드 ✏️HTTP Method의 주요 메소드는 GET, POST, PUT, DELETE GET : 리소스의 조회를 요청할때 사용 POST : 리소스를 생성하거나 서버의 상태를 변경하는 데이터를 전송할때 사용 PUT : 리소스를 생성하거나 업데이트할때 사용 DELETE : 리소스를 삭제할때 사용 ※ GET과 POST의 주요 차이점 : GET 요청은 캐시가 되나, POST는 캐시 되지 않는다 → GET 요청은 캐싱을 통해 요청 횟수를 줄이고, 이전에 요청한 내용을 다시 볼 수 있게 되지만 POST 요청은 보안적인 이유와 동적인 응답 때문에 캐싱하지 않는다 ✏️HTTP 많이 사용되는 주요 상태 코드 200 OK: 요청이 성공적으로 처리되었음을 나타냄 201 Created: 요청이 .. 2023. 4. 5.
[Restful API] Chat GPT API(gpt-3.5-turbo) 사용하기 📝Chat GPT API 사용하기 요즘 유명한 챗 지피티 API를 사용해보려한다 우선 공식 홈페이지(https://openai.com/)에 접속하여 로그인한다 Product > OverView 클릭하고 해당 페이지로 가서 Get started 버튼 클릭 Chat을 클릭해서 이용하는 방법과 예시 코드를 확인 사용법을 확인했다면 key를 발급 받습니다 우측 상단에 Personal 클릭, View API Keys를 클릭하여 해당 페이지로 이동 후 Create new secret key를 클릭하여 secret key를 발급 받아주고 이를 내 로컬에 저장 저장했다면 이제 공식문서를 확인하고 API를 호출해 사용해준다 위의 공식문서에 있는 파이썬 코드를 가져왔다(주석을 달아놨으니 참고) 아래 코드는 요청으로부터 사.. 2023. 4. 3.
[Restful API] CLOVA Summary를 이용한 리뷰 요약 API 만들기 📝클로바 Summary를 이용한 리뷰 요약 API 만들기 CLOVA Summary ? 문서를 요약하고 핵심 문장을 추출해 주는 서비스 (https://www.ncloud.com/product/aiService/clovaSummary) 네이버 문서요약 API를 활용해 작성한 리뷰들을 요약해주는 API를 만들어보았다 우선 네이버 클라우드 플랫폼 ncloud.com 접속 후 로그인하여 (https://www.ncloud.com/) 우측 상단 콘솔(Console) 접속 하여 AI·NAVER API 검색 후 이동 결제수단을 등록하지 않은 경우 먼저 등록처리 Application 등록시 CLOVA Summary 서비스를 활성화시켜 생성 생성한 앱을 클릭하여 인증정보를 확인 Client ID (X-NCP-APIGW-.. 2023. 4. 3.
[Android Studio] 카카오 로그인 API로 간편 로그인 구현하기 📝안드로이드 스튜디오에 카카오 로그인 API로 간편 로그인 구현하기 아래 페이지로 가서 로그인 후 내 애플리케이션을 등록해준다 (https://developers.kakao.com/) 애플리케이션 등록을 하면 네이티브 앱 키를 얻을 수 있다 (네이티브 앱 키를 확인하려면 내 애플리케이션 > 앱 설정 > 요약정보로 들어가면 확인이 가능하다) 좌측의 플랫폼으로 들어가서 Android 플랫폼 등록을 클릭하여 등록해주는데 키 해시를 얻기 위해서는 안드로이드 스튜디오를 실행 시켜 아래 코드를 입력해 로그를 확인하고 확인한 로그를 키해시에 입력해주면 플랫폼 등록은 완료된다 public class MainActivity extends AppCompatActivity { @Override protected void o.. 2023. 3. 31.
[MySQL] 인덱스(Index) 설정하기 📝MySQL Workbench 인덱스(Index) 설정하기 인덱스(Index)란? RDBMS(관계형 데이터베이스 관리 시스템)에서 테이블에 대한 검색 속도를 높여주는 자료 구조 인덱스를 거는 이유는 검색을 빨리 하기 위해 하는 것인데 서버 개발을 다 하고나서 쿼리문의 join의 on 컬럼, where 컬럼, order by 컬럼에 아래처럼 인덱스를 걸어준다 인덱스를 걸때 같은 쿼리문 안에 있는 같은 테이블의 컬럼은 같이 걸어준다 아래 예시 코드처럼 r테이블의 컬럼이(같은 테이블의 컬럼이) 한 쿼리문에 세개가 있으면 세개를 동시에 걸어준다 ex) … where r.userId = 1 and r.titleId = 2 order by r.rating desc; 이처럼 여러개의 컬럼에 인덱스를 걸때 체크하는 순.. 2023. 3. 31.
[Git] GitHub Desktop에서 브랜치 합치기(merge) 📝 깃허브 데스크탑에서 브랜치 합치기 팀원들과 프로젝트를 진행하기 위해 브랜치를 생성해 나눠서 작업했는데 작업을 다 하고메인 브랜치와 합치기 위해 알아보다가 깃허브데스크탑을 사용하면 쉽게 합칠 수 있어서 포스팅으로 남겨본다 내가 사용한 브랜치에서 작업하고 Publish branch를 클릭 클릭하면 깃허브 홈페이지에 노란색 팝업알림이 뜨며 Compare & Pull request 버튼이 활성화된다 버튼을 클릭하면 아래 화면처럼 commit의 내용과 하단에 코드의 변경사항을 확인할 수 있다 확인 후 Create pull request 버튼을 눌러준다 화면에 This branch has no conflicts with the base branch가 뜨면 충돌이 없다는 뜻이다 Merge pull request를.. 2023. 3. 2.