본문 바로가기

전체 글64

웹 개발 구조 정리 웹 개발에 있어서는 다양한 요소들이 존재한다. 요청을 보내는 쪽, 요청을 받는 쪽, 그리고 그 사이에서 데이터를 주고받는 여러 layer와 방식이 존재한다. 이번 포스트에서는 웹 개발 할 때 주로 언급되는 요소들에 대한 용어를 알아본다.클라이언트클라이언트(Client)란, 네트워크를 통해 요청을 보내는 주체를 말한다. 어떠한 정보나 서비스에 대해 요청을 보내고 그에 대한 응답값을 받는 주체이다. 주고 받는 관계에서 받는 포지션에 해당한다. 보통 웹 개발에서는 웹 브라우저가 대표적인 클라이언트이다. 예시로 든 웹 브라우저만 클라이언트는 아니고, 요청을 보내는 주체는 보통 다 클라이언트라 지칭한다. 경우에 따라서는 화면이 아닌 또 다른 서버가 클라이언트가 될 수 있다. 상대적인 개념이라 클라이언트와 서버가 .. 2023. 9. 8.
[Python] Fastapi 구조 fast api파이썬으로 API를 빌드하기 위한 web framework이며 파이썬의 다른 프레임워크로는 django, flask 등이 있다.웹 프레임워크: 웹 클라이언트와 서버 간의 통신 모습, HTTP 요청 및 응답의 성격, 서버 측 웹 애플리케이션이 웹 브라우저의 요청에 응답하기 위해 수행해야하는 작업들이 있는데, 이 개발 작업을 단순화 하는 도구와 라이브러리를 제공아래 그림은 어떻게 fastapi가 비동기 구조를 실행할 수 있는지에 대한 구조이다.크게 ASGI 프레임워크인 Fastapi -> starlette -> ASGI 서버인 Uvicorn -> uvloop(cpython) 의 순서로 실행된다.이러한 구조로 인해 fast api는 비동기 작업을 수행할 수 있고 빠른 성능을 제공할 수 있다. 여.. 2023. 9. 1.
Python 작동 원리, Python은 어떻게 작동하는가 왜 파이썬은 좋은가파이썬이 어떻게 동작하는지가 궁금해진 이유는 "왜 파이썬은 좋은가" 라는 질문의 답을 찾고 싶어서 이다.보통 그 이유를 "문법이 쉽다", "라이브러리가 잘되어 있다" 처럼 편.리.해.서 를 길게 말한 경우가 많다. 물론 편리성도 중요한 조건 중 하나지만 그를 제외하고 어떤 특성으로 인해 어떤 측면에서 효율적인지가 궁금해졌다. Python?!파이썬은 1991년 귀도 반 로섬이 발표한 고급 프로그래밍 언어이자 인터프리터 언어이고, 객체 지향 언어이자, 플랫폼에 독립적인 동적 타이핑 대화형 언어이다.파이썬이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다. 이름에서 고대신화에 나오는 커다란 뱀을 연상하는 경우도 있겠지만 이와는 무관하다.. 2023. 8. 24.
로그 레벨 설정하기 로그 레벨이란?로그의 중요도를 나타내는 수준로깅 시스템에 사용되며 경우에 따라서는 해당 메시지를 저장할 것이지 말 것인지, alert을 보낼 건지 아닌지 등의 지표로 쓰이기도 함로그 레벨 종류기본적으로는 ALL, OFF 포함 7단계이다. (ALL 보통 아래 5단계 정도를 많이 사용한다.종종 print문으로 로그를 출력하는 경우도 있는데, 시스템 성능에도 악영향을 미칠 뿐 아니라 로그 레벨과 같은 체계적인 디버깅이 불가하니 최대한 피해야한다. DEBUG디버깅 목적으로 사용되며, 개발 단계에서 상세한 정보를 기록한다.애플리케이션의 내부 동작을 이해하고 문제를 분석하는 데 도움을 준다.INFO정보성 메시지를 기록한다.애플리케이션의 주요 이벤트나 실행 상태에 대한 정보를 전달한다. WARN경고성 메시지를 기록한.. 2023. 8. 17.
[Archiev] git 관련 참고 https://yeonyeon.tistory.com/50 [GIT] 로컬 프로젝트를 git hub에 올리기 본 포스팅에서는 Git Hub와 Git Bash를 이용해 로컬 프로젝트를 Git Hub에 올리는 방법을 포스팅한다. Git Hub에서 레포지토리를 생성했다는 가정 하에 포스팅한다. 생성한 레포지토리의 주소를 복사해 yeonyeon.tistory.com https://novemberfirst.tistory.com/91#:~:text=git%EC%9D%98%20%EC%BA%90%EC%8B%9C%EB%AC%B8%EC%A0%9C%20%EC%9D%B4%EB%AF%80%EB%A1%9C,%ED%9B%84%20%EB%8B%A4%EC%8B%9C%20%EC%BB%A4%EB%B0%8B%ED%95%98%EB%A9%B4%.. 2022. 8. 28.
[Fastapi] 무작정 프로젝트 만들기 안녕하세요, 은세라 입니다! 블로그에 두문불출 하는 동안 큰 변화가 생겼는데 바로 제가 주니어 첫 이직을 했습니다! 🎉 이직을 해서 가장 큰 문제는 기술 스택이 많이 바뀌었다는 점입니다. java에서 python으로, 프레임워크는 spring에서 fast api로 옮겨가게 되었는데 회사 프로젝트는 설정할게 넘 많아요.. 그래서 개인적으로 해보는 무작정 로컬에 띄워보기 연습입니다! 1. Pycharm 다운로드 파이썬과는 코테 문제만 풀던 사람이라 IDE부터 새로 깔아보겠습니다. https://www.jetbrains.com/pycharm/download/#section=mac Download PyCharm: Python IDE for Professional Developers by JetBrains Dow.. 2022. 8. 27.
SQL 파싱과 최적화 옵티마이저가 SQL을 어떻게 처리하는지 서버 프로세스는 데이터를 어떻게 읽고 저장하는지 SQL : Structured Query Language 구조적 질의 언어 (↔ 절차적 프로그래밍) SQL 최적화 : DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행 가능한 상태로 만드는 전 과정 SQL 실행 전 최적화 과정 SQL 파싱 수행 주체 : SQL 파서 (Parser) 파싱 트리 생성 : SQL문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성 Syntax 체크 : 문법적 오류가 없는지 확인 (ex. 사용할 수 없는 키워드를 사용했거나 순서가 바르지 않거나 누락된 키워드가 있는지 확인) Semantic 체크 : 의미상 오류가 없는지 확인 (ex. 존재하지 않는 테이블 또는 컬럼을 사용했는지, 사용한 .. 2022. 4. 26.
[모던자바인액션] Chapter 1 - 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가 1.1 역사의 흐름은 무엇인가? Java8의 특징 간결한 코드 멀티코어 프로세서의 쉬운 활용 //java8 이전 Collections.sort(inventory, new Comparator() { public int compare(Apple a1, Apple a2){ return a1.getWeight().compareTo(a2.getWeight()); } }); //java8 inventory.sort(comparing(Apple::getWeight)); 지금까지의 자바 프로그램은 코어 중 하나만을 사용 (그 외의 코어를 사용하려면 스레드를 사용) 자바8에서는 병렬 실행을 단순하게 할 수 있는 방법 제공 ⇒ 리액티브 프로그래밍 스트림API SQL 쿼리문에서 처리하는 것처럼 병렬 연산을 지원 최적의 저수.. 2022. 4. 25.
[백준] [Python] #14503 로봇청소기 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 가장 기본적인 구현 문제에 해당한다. 1차 시도 시키는 대로 코드로 옮기는게 장땡이란 생각으로 옮긴 코드인데 청소를 하지 못하는 경우를 처리하는게 복잡해졌다. import sys sys.stdin = open("input.txt", "r") n,m = map(int, input().split()) r,c,d = map(int, input().split()) #0북,1동,2남,3서 graph = .. 2022. 4. 16.
[백준] [Python] #1062 가르침 https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 풀어보려고 보니, 이전에 실패를 했다가 해결 못했던 문제였다. 처음에는 아 파이썬이면 string처리 어렵지않지~이러고 얕보고 풀기 시작했는데, 과거의 내가 실패로 놔두었던 이유가 있었다. 1차 시도 1. alphabet 리스트를 만들어서 2. 주어진 단어를 순회하면서 각 알파벳이 몇번째 단어에서 등장하는지 확인 2-1. 한 단어에서 중복해서 등장하는 것 처리가 필요할것 같았지만 그러면 시.. 2022. 4. 16.
IntelliJ 자주쓰는 단축키 모음 (Mac) 코드 라인 복사 : Cmd + D 라인 이동 : Option + Shift + 방향키 라인 삭제 : Cmd + Backspace 자동완성 : Ctrl + Space 생성자/Getter/Setter 만들기 : Ctrl + Enter 변수 추출 : Cmd + Option + V import 추가 : Option + Enter 쓰지않는 import 정리 : Ctrl + Option + O 메서드 실행 : Ctrl + Shift + R 전체에서 검색 : Cmd + Shift + F 파일에서 검색 : Cmd + F 전체에서 교체 : Cmd + Shift + R 파일에서 교체 : Cmd + r 파일 검색 : Cmd + Shift + O 참고 https://gmlwjd9405.github.io/2019/05/21/i.. 2022. 4. 16.
[Trouble Shooting] JPA - 중복된 Data만 select 됨 문제 상황 JPA로 DB 데이터를 select하는 중 같은 id를 가진 값만 select 되었다. H2에 있는 data가 이상한 것인가 확인해보니, 저장된 값이 이상하진 않았다. 아래는 같은 select 문을 날렸음에도 동일 id값만 중복되게 데이터가 return 되었다. 해결 방안 아래는 해당 entity의 java class 코드인데, id 어노테이션을 잘못 붙인게 원인이었다. @Entity @Getter @Setter @Table(name = "ACCOUNT") @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Account { @Id private String accountNumber; private String userId; } 애.. 2022. 4. 16.