본문 바로가기
반응형

전체 글123

[Django linux-redhat 배포 시] mysqlclient 2.2.4 ver 설치 에러 subprocess-excited-with-error / mysql-devel 설치 시 mariadb-devel로 인식되는 오류 해결 Django 프로젝트를 ec2 서버에 배포를 하는 도중 에러가 발생했다. 아무리 구글링을 해봐도 해결법이 나오지 않던 중 3일만에 해결을 하여 기록한다. 설치한 라이브러리 - asgiref 3.7.2 - Django 4.2.10 - Djangorestframework 3.1.4 - Mysqlclient 2.2.3 - sqlparse 0.4.4 먼저 ec2 서버에 접속 후 git, python3 버전을 설치했다. 그리고 git에 올라가있는 django프로젝트 gitlab 소스코드를 clone 하였고, requirements.py에 저장해둔 내 라이브러리 설치 버전들을 install 하려고 했다. Django 등 다른 라이브러리들은 설치가 잘 되었으나 mysqlclient가 subprocess-excited.. 2024. 2. 20.
[JSP / FileUpload / AJAX] 파일 다운로드 + 다운로드 수 실시간 올리기 JSP를 활용하여 파일 업로드를 하고 조회수와 다운수를 실시간으로 업데이트 시켜주는 기능을 구현하려고 하였다. 기존 JSP의 동작은 새로고침이 되야 데이터가 업데이트 되는 방식이였다. 하지만 나는 SPA처럼 다운 수 부분만 업데이트 시켜주고 싶었다. 로직은 "다운로드 버튼 클릭" -> "ajax에서 FileDownload 서블릿 url로 요청" -> FileDownload 서블릿에서 "파일다운로직, ajax response로 업데이트 된 다운 수 전달" 로 생각하여 개발을 진행하였다. 하지만 ajax 응답이 계속해서 오지 않았고, 성공 시 응답이 오더라도 file안의 data가 byte값으로 찍혔다. 이를 해결하기 위해 여러명이 머리를 싸매서 고민했고, 정답을 알아냈다. 일단은 간단한 UI와 파일들을 먼.. 2022. 7. 7.
Web의 변천사 (HTML -> Servlet -> JSP -> MVC -> Spring) 자바 서블릿이란 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램. 쉽게 이야기하면, 클라이언트가 서버에 요청을 보낼 때와 응답을 받을 때 필요한 HTTP 작업을 도와주는 것. Web HTML -> Servlet -> JSP -> MVC -> Spring 1. Web HTML - 기존의 웹은 위의 사진처럼 HTML / CSS / JS를 활용한 하나의 페이지만 보여주는 정적 페이지였다. - 동적 프로그래밍에 대한 희망 그로인해 Servlet, JSP가 나오게 됨 (Dynamic Web Project 생성) - 브라우저의 요청에 따라 항상 다른 페이지를 보여주는 페이지 Servlet - 자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램. - 웹 클라이언트의 요청을 처리할 수 있는 클래.. 2022. 7. 5.
Forward 방식과 Redirect 방식의 차이 Servlet을 이용하여 client에서 보내준 값을 Servlet1 -> Servlet2로 보내서 띄우기 위해 Forward와 Redirect방식을 이용해서 처리를 하였다. Client에서 Post방식으로 데이터를 보내줬고, Servlet1에서 doPost로 데이터를 받았다. 그 후 Forward방식과, Redirect를 이용하여서 Servlet2로 보내주었고, Servlet2에서 doGet방식으로 데이터를 받으려고 했다. 하지만 Redirect방식만 응답이 있었고, Forward방식은 응답이 없었다. 그래서 Client에서 Get방식으로 데이터를 보내줬고, 똑같이 수행하니 Redirect와 Forward 두가지 방식 모두 다 응답이 있었다. 여기서 나는 왜 Get방식으로 보내면 둘 다 응답이 가고, .. 2022. 6. 30.
스레드와 메모리구조 프로세스 vs 스레드 (Thread) 프로세스란? - 프로그램을 실행시켰을 때 메모리상에 올라가 동작되고있는 과정 스레드란? - 프로세스 내에서 실행되는 흐름의 단위 1. main() 안의 실행문들이 하나의 Thread이다. 2. main() 이외의 또 다른 스레드를 만들려면 Thread 클래스를 상속하거나, Runnable 인터페이스를 구현한다. 3. 멀티스레드로 작업을 할 때에는 각 스레드끼리 정보를 주고받을 수 있어 처리 과정의 오류를 줄일 수 있다. 4. Java 메모리구조 에서는 스레드가 생성될 때 마다 각각 독립적인 Stack영역, PC영역, NMS(Native Method Stack)영역을 가지게 된다. 메모리 구조 - 선택 이유 코드를 작성하고 프로그램을 개발 해봤지만, 컴퓨터 내부에서는 .. 2022. 6. 21.
Socket을 활용한 채팅 프로그램 [로비, 방만들기, 채팅방 입장, 방별 채팅, 채팅방 나가기] 주요 기능 - 로비에서 방 만들기 - 채팅방 입장 - 채팅방 별 채팅 - 채팅방 나가기 기술 스택 Java 새로 알게된 기술 Thread / Socket Thread란? 프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다. 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded pro.. 2022. 6. 15.
[22.06.13] TCP/IP 네트워크 통신 22.06.13 - 네트워크에 대해 배운 날 TCP/IP 통신을 배움 TCP(Transmission Control Protocol)란? 신사적인 Protocol로 전송 제어 규약으로 데이터를 전송함에 있어서 지켜지는 약속 이다. Web(tomcat), Database같이 서버 관련 프로그램들도 전부 TCP 기반으로 되어있다. TCP는 동기 통신이고, UDP는 비동기 통신이다. TCP는 왜 신사적인가? 신호를 보냈을 때 상대방과 정보를 주고 받을 때 승인 신호 절차를 거쳐서 주고받기 때문 Router란? Hadware host간에 상호 데이터를 교환할 수 있도록 하는 장비 host1 -> router1 -> Internet -> router2 -> host2로 전달된다. 여기서 Internet은 Inter.. 2022. 6. 13.
[Docker] Volumes, Bind Mounts 볼륨과 바인드마운트 - 컨테이너 데이터를 저장하는 기술 Data의 종류 - Application (Code + Environment) 1. 개발자에 의해 작성되고 제공 되는 데이터 2. 이미지가 추가되거나 컨테이너가 빌드될 때 생성 3. 이미 생성된 이미지는 변경될 수 없음 * Read-only, 이미지에 저장되는 데이터 - Temporary App Data (entered user input) 1. 컨테이너가 돌아갈 때 생성되는 데이터 2. 메모리 또는 임시파일에 저장 됨 3. 동적으로 변화함. 그러나 정기적으로 초기화 됨 * Read + write, 컨테이너에 임시로 저장되는 데이터 - Perment App Data (user accounts) 1. 컨테이너가 돌아갈 때 생성되는 데이터 2. 파일이나 데이터베이스에 저장이 됨 3. 컨테이너가 멈추거나 재 .. 2022. 6. 8.
[Docker]도커란 무엇인가? 도커의 등장 - 다양한 이유로 계속 바뀌는 서버 환경과 개발 환경의 문제를 해결하기 위해 등장 * 기존 서버나 개발 환경이 변경되면 컴퓨터 셋팅(개발환경)등을 다시하거나 그 과정에서 발생하는 문제점들이 많았음. 그렇다면 도커란? - 개발한 소프트웨어 유닛, 코드가 포함된 패키지 및 코드를 실행하는 종속성 들을 담을 수 있음 - 도커가 실행되는 모든 곳에서 이를 가져올 수 있음 - 동일한 환경에서 정확히 동일한 애플리케이션을 실행할 수 있음 - 결국 각 개발자 마다 개발 환경을 맞추기 위해 저장을 하는 것. 도커 이전의 문제점 문제점 1. 개발자들이 규모가 큰 환경에서 함께 개발을 할 때 - Node.js 14ver를 사용하였는데, 한동안 개발이 이루어지지 않다가 다른 개발자가 Node.js 16ver로 .. 2022. 6. 6.