본문 바로가기

코딩

크래프톤 정글 week07, day53 - CPU 스케줄링 알고리즘, 잔디심기 CPU 스케줄링 알고리즘 CPU 스케줄링은 다중 프로그램 환경에서 CPU의 사용 시간을 효율적으로 분배하기 위한 방법이다. 이를 통해 시스템의 성능을 최적화하고, 대기 시간을 최소화하며, CPU 사용률을 극대화하는 것이 목표이다. 알고리즘 종류 선입선출 스케줄링(First-Come, First-Served Scheduling - FCFS) 이 알고리즘은 먼저 도착한 프로세스부터 처리하는 알고리즘이다. 프로세스 실행 시간을 예측하기 쉽고 단순하고 공평하지만 CPU 버스트 시간이 긴 프로세스가 먼저 도착하면 다른 프로세스들은 긴 대기 시간을 감수해야 하는 ‘호흡성’ 문제가 발생할 수 있다. 최단 작업 우선 스케줄링(Shortest Job Next Scheduling- SJN) 이 알고리즘은 CPU 버스트 시.. 더보기
크래프톤 정글 week06, day52 - Tiny Server Code, 잔디심기 Tiny Server Code tiny.c 더보기 #include "csapp.h" void doit(int fd); void read_requesthdrs(rio_t *rp); int parse_uri(char *uri, char *filename, char *cgiargs); void serve_static(int fd, char *filename, int filesize, char *method); void get_filetype(char *filename, char *filetype); void serve_dynamic(int fd, char *filename, char *cgiargs, char *method); void clienterror(int fd, char *cause, char *er.. 더보기
크래프톤 정글 week06, day51 - CGI, WebServer, MIME Type, Proxy, 잔디심기 CGI(Common Gateway Interface) 웹 서버와 독립적인 소프트웨어 혹은 스크립트 간에 정보를 주고 받는 방식 이는 사용자가 웹페이지에 입력한 정보를 서버에 전달하거나, 서버에서 처리한 데이터를 사용자에게 보여주는 등의 역할을 한다. 특징 언어 독립성 CGI 스크립트는 Java, Python, C, 등 다양한 프로그래밍 언어로 작성될 수 있으며, 이는 웹 서버와 프로그래밍 언어 간의 통신을 가능하게 한다. 독립적인 프로세스 각각의 CGI 요청은 별도의 프로세스로 처리된다. 이는 간단하고 안전한 동작을 가능하게 하지만, 많은 요청을 동시에 처리할 때는 오버헤드가 커질 수 있다. 표준 입출력을 통한 데이터 전송 CGI 프로그램은 표준 입력을 통해 웹 서버로부터 정보를 받고, 표준 출력을 통해.. 더보기
자바스크립트 출력 시에 뜨는 특수 문자 제거 '-' 특수문자 제거 input.replace(/\-/g,''); 시작 부분의 공백 제거 input .replace(/^\s+/,''); 끝 부분의 공백 제거 input .replace(/\s+$/,''); 앞뒤 둘 공백 제거 input .replace(/^\s+|\s+$/g,''); 출력값의 모든 공백 제거 input .replace(/\s/g,''); \n(줄바꿈 문자) 제거 input .replace(/\n/g,''); \r(리턴 문자) 제거 input .replace(/\r/g,''); 백준 문제 풀 때나 배열로 받아온 문자를 출력할 때 출력값 뒤에 \r이나 \n이 붙는 경우가 있다. 위의 코드를 이용해 이 부분을 제거하여 깔끔하게 출력이 가능 더보기
크래프톤 정글 week06, day50 - Telnet, 잔디 심기 Telnet 로컬 네트워크 내에서 직접 연결된 것처럼 리모트 컴퓨터에 로그온하여 사용할 수 있도록 하는 프로토콜이다. 초기에 상용된 원격 접속 프로그램이며, 보안에 취약점이 많아 최근에 SSH로 대체되어 거의 사용하지 않는다. 실제로 사용하는 시스템(보통 pc)은 Telnet 클라이언트인데, Telnet서버는 클라이언트가 접속되어 있는 리모트 컴퓨터이다. TCP/IP는 클라이언트와 서버 모두를 지원한다. 가장 중요한 기능 중 하나는 Telnet 클라이언트와 서버 사이에서 데이터 스트림의 전송을 협상하는 기능이다. 이 협상 유형은 클라이언트 또는 서버가 요청을 시작하거나 받아들일 수 있게 한다. 오늘의 잔디심기 백준 1173 JavaScript 브론즈2 운동 const fs = require("fs"); .. 더보기
Makefile:{line-number}: *** missing separator. Stop. 코드의 테스트를 할 때 사용하는 Makefile파일에서 제목의 에러가 발생하는 경우가 있다. 이 에러는 Makefile에서 규칙을 작성할 때 잘못된 공백 문자가 사용되거나, 명령어 부분을 구분하는 Tab 문자가 없을 때 발생한다. Makefile 뒤의 line-number는 에러가 난 줄 번호를 출력한다. 즉, 그 라인의 Makefile을 만들던 중 오류가 발생했다라는 표시 이 에러의 해결점은 탭(Tab) 대신에 공백(spacebar)가 들어갔는지 확인을 일일이 해줘야 한다. 혹은 작성한 코드 위에 불필요한 공백이 있는지도 확인해보면 좋을 것 같다. 공백 부분을 잘 수정하면 make시 올바르게 생성됨을 볼 수 있다. 더보기
크래프톤 정글 week06, day49 - 망의 구성 형, 잔디 심기 망의 구성 형태 네트워크는 여러 컴퓨터나 기기들이 상호 연결되어 데이터를 주고 받을 수 있는 구조이다. 네트워크의 망 구성은 이러한 기기들이 어떻게 연결되어 있는지에 대한 형태이며, 이는 데이터 전송 효율성, 비용, 확장성 등 여러 측면을 고려해 설계된다. Star형(성형, 중앙 집중형) 모든 노드가 중앙 노드에 1:1(Point-to-Point)로 연결되어 있는 방식 중앙 노드의 고장 없이는 매우 안정적인 네트워크를 구성할 수 있다. 고장 발견이 쉽고, 확장성과 유지보수에 용이하다. Mesh형(망형) 모든 노드가 서로 직접 연결되어 있는 방식 응답 시간이 빠르고 노드의 연결성이 높다. 높은 연결성과 신뢰성을 제공하지만, 회선 수가 많아져 비용이 많이 들고 관리가 복잡하다. .. 더보기
크래프톤 정글 week06, day48 - Datagram Socket vs Stream Socket, HTTP, 클라이언트-서버 트랜잭션, 잔디 심기 Datagram Socket vs Stream Socket 소켓 소켓은 OS를 통해 네트워크 통신을 하는 표준 방법이다. 서버와 클라이언트가 데이터를 주고 받을 때 사용하는 함수이며, 데이터는 5계층인 세션 계층에서 전송된다. 그리고 4계층의 구조를 결정하는 여러 종류의 소켓 타입이 있는데, 가장 보편적인 타입이 Stream Socket과 Datagram Socket이다. Stream Socket Stream Socket은 신뢰성 있는 양방향 통신을 제공한다. 즉, 한쪽에서 다른 쪽의 연결을 초기화하고 연결이 생성된 후에는 어느 쪽에서든 다른 쪽으로 통신할 수 있다. 또한 보낸 내용이 실제로 도착했는지도 즉각적으로 확인이 가능하다. Stream Socket은 패킷을 오류없이 순서대로 도착하도록 설계된 T.. 더보기