전체 글

"오늘의 내가 내일의 나를 만든다!"
· Python
파이썬 동시성 프로그래밍에 대해 알아보자❕  멀티 스레딩은 하나의 프로세스 안에서 처리해야 할 여러 작업(A, B, C)가 있다면 프로세스의 자원을 공유해 동시에 수행하는 것을 의미하고, 비동기는 어떠한 작업이 완료되기를 기다리지 않고 뒤에 작업을 하는 것을 의미한다. 프로그램을 구현하다보면 성능을 위해 멀티 스레드 및 비동기 처리가 필요할 때가 있는데, 이번 시간에는 파이썬에서 이 둘의 동작과 적용하는 방법에 대해 정리해보려고 한다.   1. 동시성과 병렬성동시에 실행된다는 것은 동시성과 병렬성으로 나누어 설명할 수 있다. 동시성(Concurrency) : 실제로 동시에 작업이 실행되지는 않지만, 마치 여러 작업을 동시에 하는 것처럼 느껴지게 하기 위해 시분할 처리하는 것 (멀티 스레드, 코루틴, 비동..
· Python
SQLAlchemy 개념 및 사용법에 대해 정리해 보자 ❕ Flask로 개발한 적이 있었는데, Flask는 ORM을 내장하지 않아 ORM 라이브러리를 이용해야 했다. 이 때 SQLAlchemy를 사용했는데, 처음 사용해 본 기술이라 다시 한번 정리해보려고 한다. 참고로 Flask에서는 SQLAlchemy를 확장한 Flask-SQLAlchemy도 제공한다.  먼저 ORM에 대해 정리한 뒤, SQLAlchemy에 대해 알아보자.   1. ORMORM(Object Relational Mapping)은 객체-관계의 매핑을 의미한다.ORM은 애플리케이션과 데이터베이스 연결 시 SQL 언어가 아닌 애플리케이션 개발 언어로 데이터베이스에 접근할 수 있게 해주는 도구이다. SQL문법 대신 애플리케이션의 개발언어를 그대..
· Docker
Docker의 개념과 사용법을 정리해보자 ❕ 서버를 구축할 때, 개발 환경이 바뀌면 컴퓨터 세팅이나 배포 환경 값들을 재설정해야하는데 매번 프로그램을 재설치하고 환경 값을 재설정한다면 매우 번거로울 것이다. 이런 문제점을 Docker를 통해 해결할 수 있다.그리고 특정 애플리케이션을 이용해 간단한 테스트를 할 때 무거운 애플리케이션을 매번 설치해서 테스트해야 하는 번거로움이 있는데, 이 또한 Docker를 통해 해결할 수 있다.   1. Docker 개념컨테이너 기반의 가상화 플랫폼애플리케이션 및 그에 따른 환경을 격리된 컨테이너에 패키징해 개발, 배포, 실행을 쉽게 지원하는 도구이다. Go 언어로 작성됐다.리눅스 컨테이너 기반 오픈소스 가상화 시스템각 컨테이너는 독립된 실행환경을 보장한다.다양한 프로그..
· Web
XSS와 CSRF에 대해 알아보자 ❕   1. XSS (Cross-Site Scripting)해커가 웹페이지에 악성 스크립트를 삽입하고, 사용자가 이를 실행하도록 하는 형태의 공격 기법 XSS(크로스 사이트 스크립팅)는 공격자가 사용자 브라우저에 악성 스크립트를 주입시켜 사용자의 세션을 가로채거나 사용자가 원치 않는 동작을 하도록 만드는 공격을 말한다.해커는 악성 스크립트를 실행한 사용자의 개인정보 및 쿠키정보를 탈취하고 악성코드 감염, 웹페이지 변조 등의 공격을 한다. XSS 공격은 주로 스크립트 언어와 취약한 코드를 대상으로, 웹 애플리케이션에서 사용자로부터 입력 받은 값을 제대로 검사하지 않아 발생되며 공격 대상이 주로 사용자이다.  대표적인 공격 방식Stored XSS (Persistent XSS..
· DB
JDBC와 DBCP에 대해 학습하고, DBCP 옵션들에 대해 알아보자 ❕ JDBC와 DBCP 모두 데이터베이스와 상호작용하는데 사용되는 기술이다.JDBC는 자바에서 데이터베이스에 접근하고 쿼리를 실행하기 위한 표준 API이고, DBCP는 데이터베이스 연결을 효율적으로 관리하고 성능을 최적화하기 위한 기술이다. JDBC 위에서 DBCP가 동작되는 형태이다. 특히 대규모 애플리케이션이나 높은 트래픽의 서비스에서는 DBCP 방식을 사용해 성능을 최적화하는 것이 중요한데, 왜 DBCP를 사용하는 것이며 어떤 설정값이 있는지 알아보려고 한다.   1. JDBC(Java DataBase Connectivity)자바에서 데이터베이스에 접근하고 쿼리를 실행하기 위한 표준 API이다.개발자가 JDBC API를 이용해 데..
· Spring
Java에서 엑셀 파일을 다루기 위해 사용하는 Apache POI 라이브러리에 대해 공부해보자 ❕ Apache POI(Poor Obfuscation Implementation)는 아파치 소프트웨어 재단에서 만든 라이브러리로 마이크로소프트 오피스 파일 포맷을 자바 언어로 읽고 쓰는 기능을 제공한다.전에 구현했던 프로젝트에서 엑셀 파일을 읽고 파일을 생성하는 기능이 필요해 해당 라이브러리를 사용했었는데, Apache POI 라이브러리를 사용하기 전에 알아야 할 개념과 사용법을 정리해보려고 한다.  Apache POI 공식 사이트 Apache POI - the Java API for Microsoft Documents Project News 25 November 2023 - POI 5.2.5 avai..
· Web
Servlet과 JSP에 대해 공부해보자 ❕   1. 개요Servlet과 JSP 모두 동적 콘텐츠를 만들거나 데이터 처리 수행을 위해 사용되는 웹 애플리케이션 개발 기술이다.  초기 정적 컨텐츠만 제공하던 웹 서버에서 동적 콘텐츠를 제공하기 위한 목적으로 *CGI가 등장했다. CGI 프로그램은 서버에서 프로세스 단위로 실행되기 때문에 사용자의 요청이 많아질수록 서버에 부하가 생겼고, 이에 따라 스레드 단위로 실행하여 서버 부하를 줄이고 성능을 개선한 Servlet이 등장했다. Servlet은 순수 Java 코드로만 이루어진 웹 서버용 클래스이다. 따라서 Servlet이 수정된다면 Java 코드를 다시 컴파일한 후 빌드해야 하는 번거로움이 있었고, 이런 한계를 보완하기 위해 JSP가 등장했다.(CGI → ..
· DB
DB 인덱스 정리할 때, 대부분의 DBMS에서 인덱스가 B-Tree 자료구조로 저장된다고 했다. B-Tree는 어떤 자료구조이며, B+Tree와의 차이점과 왜 DB 인덱스에 사용되는지 공부해보자 ❕  DB 인덱스 (index)데이터베이스에서 사용하는 용어 index(인덱스)에 대해 알아보자 1. 인덱스(index) 인덱스란 RDBMS(관계형 데이터 관리 시스템)에서 테이블의 검색 속도를 향상시키기 위한 자료구조이다. DB에는 여러chchaego.tistory.com  1. B-TreeB-Tree는 탐색 성능을 높이기 위해 균형 있게 높이를 유지하는 균형 트리(Balanced Tree)의 일종이다. 이진 트리와 다르게 하나의 노드에 여러 데이터를 저장할 수 있으며, 각 key와 data가 1:1 대응하고 ..
· Python
CGI, WSGI, ASGI 용어의 개념을 정리해보자 ❕  다음 용어들을 공부하기 전에 Web Server와 WAS에 대한 개념을 잡고 있으면 이해가 쉽다. Web Server & WASWeb Sever와 WAS의 개념을 공부하고 차이점을 알아보자 ❕ 1. Static & Dynamic 페이지 Static Pages (정적 페이지) 바뀌지 않는 페이지 DB에서 정보를 가져오거나 별도의 서버 처리를 하지 않고 사용자들에게chchaego.tistory.com  파이썬 웹 프레임워크에 대해 공부하다가 WSGI, ASGI 용어가 자주 등장해서, 공부한 뒤 정리해보려고 한다.    1. CGI (Common Gateway Interface)초기 웹 개발에서 사용된 표준 인터페이스로, 웹 서버와 외부 프로그램 간의..
· Python
Python을 기반으로 하는 웹 프레임워크인 Django, Flask, FastAPI에 대해 알아보자 ❕   1. 프레임 워크프레임워크는 Frame(틀) + work(일)의 합성어로, 일을 처리하기 위한 구조를 의미한다. 전체 동작 방식은 프레임워크가 제공하고 우리는 프레임워크의 일부분만 개발하는 것이다.^즉, 프레임워크의 정해진 규칙을 지켜 우리가 일정 부분을 개발하면 실제 동작은 프레임워크가 책임진다.^  파이썬은 웹 애플리케이션 개발을 위한 여러 프레임워크를 제공한다. 그 중에서도 Django, Flask, FastAPI는 가장 인기 있는 프레임워크이다.   2. DjangoInstagram, YouTube 등에서 사용되며, 가장 많이 쓰이는 파이썬 웹 프레임워크이다. 다양한 기능을 내장하고 있어 ..
chaego
푸하하