<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>coco_116.log</title>
        <link>https://velog.io/</link>
        <description>Just Do It</description>
        <lastBuildDate>Mon, 22 Jan 2024 08:34:58 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>coco_116.log</title>
            <url>https://velog.velcdn.com/images/coco_116/profile/ec586465-1568-4cac-9d78-c07b9d34c6a6/image.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. coco_116.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/coco_116" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[NAT (Network Address Translation) ]]></title>
            <link>https://velog.io/@coco_116/NAT-Network-Address-Translation</link>
            <guid>https://velog.io/@coco_116/NAT-Network-Address-Translation</guid>
            <pubDate>Mon, 22 Jan 2024 08:34:58 GMT</pubDate>
            <description><![CDATA[<h2 id="1-개념">1. 개념</h2>
<p>네트워크 주소 변환(network address translation, 줄여서 NAT)은 컴퓨터 네트워킹에서 쓰이는 용어로서, IP패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다. 한 마디로 Network Address인 IP를 변환(Translation)하겠다는 뜻이다.</p>
<p>NAT를 이용하는 이유는 대개 사설 네트워크(Private Network)에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다.</p>
<p>IP 주소에는 Public IP(공인 IP)와 Private IP(사설 IP)가 있다. IP를 굳이 두 종류로 나눈 이유를 간단히 말하자면 IPv4 주소의 낭비를 막고 공인 인터넷을 굳이 사용하지 않아도 되는 단말들에게 어느 망이든 중복 사용 가능한 IP를 주기 위함이다. (공인망에서는 공인 IP만이 유통)</p>
<p><strong>그런데 사설 IP를 할당받은 단말이 인터넷을 사용해야 한다면 단말의 IP는 어떻게 변화하는 것일까?</strong></p>
<h2 id="2-그림과-순서를-통해-nat-이해하기">2. 그림과 순서를 통해 NAT 이해하기</h2>
<p>공유기에 연결된 컴퓨터들은 각각의 사설 아이피를 부여받는다. 예를 들어 내 사설아이피가 192.168.0.3 이라고 가정했을 때,</p>
<p>만일 위키피디아라는 사이트에 접속하고 싶으면, 컴퓨터는 게이트웨이 어드레스에 해당되는 IP 머신(공유기)에게 신호를 보낸다.</p>
<p><img src="https://velog.velcdn.com/images/coco_116/post/87210c3a-939f-4d9a-a770-dd7724a778cc/image.png" alt=""></p>
<p>신호를 받은 공유기는 다음 순서에 따라 위키피디아에게 요청을 보낸다.</p>
<h4 id="1-누가-요청했는지-알아야하기-때문에-먼저-요청받은-내부ip를-기록한다-19216804">1. 누가 요청했는지 알아야하기 때문에 먼저 요청받은 내부ip를 기록한다. (192.168.0.4)</h4>
<h4 id="2-요청한-컴퓨터-ip는-외부에서-접속할-수-없는-사설ip다-따라서-사설ip를-공인ip로-변환한다">2. 요청한 컴퓨터 ip는 외부에서 접속할 수 없는 사설ip다. 따라서 사설ip를 공인ip로 변환한다.</h4>
<p><img src="https://velog.velcdn.com/images/coco_116/post/227ad9cc-752a-499d-a484-7b860df9f84c/image.png" alt=""></p>
<h4 id="3-공유기는-이-요청을-public-ip-address-로-위키피디아에게-요청을-하고-위키피디아는-그-요청을-처리한다">3. 공유기는 이 요청을 public ip address 로 위키피디아에게 요청을 하고 위키피디아는 그 요청을 처리한다.</h4>
<h4 id="4-그리고-다시-공인ip59666238로-보내고-공유기에서-다시-사설ip로19216804로-보내서-통신을-완료한다">4. 그리고 다시 공인ip(59.6.66.238)로 보내고, 공유기에서 다시 사설ip로(192.168.0.4)로 보내서 통신을 완료한다.</h4>
<p>즉, private ip 를 사용하고 있는 컴퓨터가 사설 바깥쪽에 있는 public ip에 해당되는 외부세계에 접속할 수 있게 된다. </p>
<p>이때 사용되는 기술이 바로 NAT 이라고 보면 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[리눅스 명령어 정리 4 (검색 / 탐색 관련 명령어)]]></title>
            <link>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-4-%EA%B2%80%EC%83%89-%ED%83%90%EC%83%89-%EB%AA%85%EB%A0%B9%EC%96%B4</link>
            <guid>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-4-%EA%B2%80%EC%83%89-%ED%83%90%EC%83%89-%EB%AA%85%EB%A0%B9%EC%96%B4</guid>
            <pubDate>Tue, 16 Jan 2024 01:26:14 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스 명령어 정리 3 (네트워크 관련 명령어)]]></title>
            <link>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-3-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B4%80%EB%A0%A8-%EB%AA%85%EB%A0%B9%EC%96%B4</link>
            <guid>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-3-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B4%80%EB%A0%A8-%EB%AA%85%EB%A0%B9%EC%96%B4</guid>
            <pubDate>Mon, 15 Jan 2024 08:58:50 GMT</pubDate>
            <description><![CDATA[<h2 id="네트워크-관련">네트워크 관련</h2>
<ul>
<li><p>ifconfig (InterFace CONFIGration) : 네트워크 인터페이스의 활성/비활성화 및 설정</p>
<ul>
<li>만약 실행이 안될 경우, yum install net-tools 명령어 입력해서 설치하면 잘 실행됨</li>
</ul>
</li>
<li><p>ip : ip 관련 정보 조회 및 설정</p>
<ul>
<li>ip address show [이름] : 특정 ip만 조회. 줄여서 ip ad sh [이름] 이렇게 입력해도 동일하게 출력된다.</li>
</ul>
</li>
<li><p>netstat (NETwork STATistics) : 네트워크 프로토콜의 통계와 연결상태를 출력</p>
<ul>
<li><p>netstat -nltpu 또는 netstat -nltp를 주로 사용</p>
</li>
<li><p>-n : 호스트명, 포트명을 lookup하지 않고 그대로 IP, Port번호로 보여준다.</p>
</li>
<li><p>-l : LINTEN 상태인 서비스 포트를 보여준다.</p>
</li>
<li><p>-t : TCP 프로토콜만 보여준다.</p>
</li>
<li><p>-p : 해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여준다.</p>
</li>
<li><p>-u : UDP 프로토콜만 보여준다.</p>
</li>
<li><p>-a : 모든 네트웍 상태를 보여준다.</p>
</li>
<li><p>-r : 라우팅 테이블 출력</p>
</li>
<li><p>-s : 프로토콜별(IP, ICMP, TCP, UDP 등)로 통계를 보여준다</p>
</li>
<li><p>-c : 1초 단위로 결과값을 연속적으로 보여준다.</p>
</li>
</ul>
</li>
<li><p>ss (Socket Statistics) : 네트워크 소켓의 통계와 연결상태를 출력</p>
</li>
<li><p>iptables : 패킷 필터링 도구로 패킷의 출입을 제한하는 방화벽 구성이나 NAT(Network Address Translation) 구성에 사용</p>
<ul>
<li>ufw (Uncomplicated FireWall) : iptables의 제어를 쉽게 하기 위한 도구</li>
</ul>
</li>
<li><p>ping : ICMP 프로토콜의 응답 확인 도구</p>
<ul>
<li>ping -c [보낼횟수][서버이름] : 횟수만큼 서버에 ping을 보낸다.</li>
</ul>
</li>
<li><p>wget (World wide web + GET) : 웹서버로부터 컨텐츠를 가져오는 도구</p>
<ul>
<li>설치 명령어 : yum install wget</li>
<li>사용법 : wget [다운받을 URL 주소]</li>
</ul>
</li>
<li><p>curl (Client for URLs) : 다양한 프로토콜을 사용하여 데이터를 전송하게 해주는 도구</p>
<ul>
<li><p>사용법 : curl [옵션] [URL]</p>
</li>
<li><p>-L :     서버에서 HTTP (301,302 -리다이렉트) 응답이 오면 리다이렉트 URL로 따라감 (--max-redirs 횟수)로 지정 가능</p>
</li>
<li><p>-k :     https URL 접속 시 SSL 인증서 검사 없이 연결</p>
</li>
<li><p>-s : 진행 내역이나 메시지 등을 출력하지 않는다.</p>
</li>
<li><p>-o : -o [파일명] 을 사용하면 출력 결과를 파일로 저장</p>
</li>
</ul>
</li>
<li><p>route : 네트워크의 경로 정보(라우팅 테이블에 저장되어 있음)의 출력, 변경하는 도구</p>
<ul>
<li><p>route 각 항목 설명</p>
<ul>
<li><p>Destination : 목적지 네트워크</p>
</li>
<li><p>Gateway : 목적지로 가기위한 게이트웨이 주소</p>
</li>
<li><p>Genmask : 목적지 네트워크의 넷마스크 주소(목적지IP와 Genmask를 AND 연산한 결과가 목적지 네트워크)</p>
</li>
<li><p>Flags : 해당 경로에 대한 정보를 알려주는 기호 / U - up, H - 목적지 Host, G - 게이트웨이 사용</p>
</li>
<li><p>Metric : 목적지 네트워크까지의 거리</p>
</li>
<li><p>Ref : 경로를 참조한 횟수</p>
</li>
<li><p>Use : 경로를 탐색한 횟수</p>
</li>
<li><p>IFace : 네트워크 인터페이스</p>
</li>
<li><p>route -n : 문자를 숫자로 변환해서 보여줌</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[리눅스 명령어 정리 2 (프로세스 관련 명령어)]]></title>
            <link>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-2</link>
            <guid>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-2</guid>
            <pubDate>Mon, 15 Jan 2024 06:49:49 GMT</pubDate>
            <description><![CDATA[<h2 id="프로세스-관련">프로세스 관련</h2>
<ul>
<li><p>ps (Process Status) : 시스템에서 실행 중인 프로세스에 대한 정보를 출력</p>
<ul>
<li><p>-e : 실행중인 모든 프로세스의 정보를 출력한다.</p>
</li>
<li><p>-f : 프로세스에 대한 자세한 정보룰 출력한다.( PPID 확인 가능 )</p>
</li>
<li><p>-u [사용자이름] : 특정 사용자에 대한 모든 프로세스의 정보를 출력</p>
</li>
<li><p>-p pid : pid로 지정한 프로세스의 정보를 출력</p>
</li>
<li><p>u : 프로세스 소유자의 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력</p>
</li>
<li><p>a : 터미널에서 실행한 프로세스의 정보를 출력</p>
</li>
<li><p>x : 실행 중인 모든 프로세스의 정보를 출력</p>
</li>
<li><p>ps -ef : 실행중인 모든 프로세스의 자세한 정보를 출력한다.</p>
</li>
<li><p>ps aux : 실행 중인 모든 프로세스의 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력</p>
</li>
<li><p>ps axfwww 또는 ps axfwwwww(w를 3~5개 사용해면 됨) : 긴 줄이 짤리지 않고 다 출력되게 해줌</p>
</li>
</ul>
</li>
<li><p>pstree (Process Status TREE) : 시스템에서 실행 중인 프로세스에 대한 정보를 트리구조로 출력</p>
<ul>
<li>&#39;command not found&#39; 뜨면서 실행 안될 때 : yum -y install psmisc 로 설치해주면 정상적으로 실행됨</li>
</ul>
</li>
<li><p>top : 프로세스 목록을 일정 시간마다 새로고침하여 화면에 출력하는 툴. 시스템 전반적인 상황을 모니터링 할 수 있음</p>
<ul>
<li>k를 눌러 zombie process를 종료 시킬 수 있음</li>
</ul>
</li>
<li><p>nohup (NO HangUPs) : 쉘 스크립트 파일을 데몬 형태로 실행. 표준 출력을 지정한 파일로 리다이렉트</p>
</li>
<li><p>kill : 지정한 프로세스에 지정한 시그널을 보내 프로세스 종료</p>
<ul>
<li><p>INT 사용법 : kill -2 프로세스번호 또는 kill -INT 프로세스번호</p>
</li>
<li><p>TERM 사용법 : kill -15 프로세스번호 또는 kill -TERM 프로세스번호</p>
</li>
<li><p>KILL 사용법 : kill -9 프로세스번호 또는 kill -KILL 프로세스번호. zombie process를 닫을 때는 INT나 TERM으로는 종료가 안되기 때문에 무조건 KILL을 사용해서 닫아야 한다.</p>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[리눅스 명령어 정리 1 (파일시스템 관련, 디렉토리와 파일통계, 파일관련 명령어)]]></title>
            <link>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@coco_116/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 11 Jan 2024 07:55:06 GMT</pubDate>
            <description><![CDATA[<h2 id="파일-시스템-관련">파일 시스템 관련</h2>
<ul>
<li><p>cd(Change Directory) : 지정한 디렉토리로 변경</p>
<ul>
<li>cd / : 최상위 경로로 이동</li>
<li>cd . : 현재 위치로 이동</li>
<li>cd .. : 현재 위치보다 상위 위치로 이동</li>
<li>cd ../.. : 상위보다 더 상위 위치로 이동</li>
</ul>
</li>
<li><p>pwd(Print Working Directory) : 현재 위치 확인</p>
</li>
<li><p>ls(list) : 현재 디렉토리에 있는 파일 및 디렉토리의 이름을 출력</p>
<ul>
<li><p>ls -al : 숨겨진 파일을 포함하여 파일 및 디렉토리의 이름과 정보를 출력 (정보 : 소유자, 그룹, 수정일자, 파일크기)</p>
</li>
<li><p>ls -1 : 파일명만 세로로 출력</p>
</li>
<li><p>ls -alh : 숨겨진 파일을 포함하여 파일 및 디렉토리의 이름과 정보를 출력하는데 파일 및 디렉토리의 용량은 단위(K,M,G)를 붙여 출력</p>
</li>
</ul>
</li>
<li><p>df(disk free) : 마운트 된 모든 장치에 대한 현재의 디스크 공간 통계를 출력</p>
<ul>
<li><p>df -h : 디스트의 용량을 단위(K,M,G)를 붙여 출력</p>
</li>
<li><p>df -T : 디스크 타입을 보여줌</p>
</li>
</ul>
</li>
</ul>
<h2 id="디렉토리와-파일-통계">디렉토리와 파일 통계</h2>
<ul>
<li><p>mkdir(make directory) : 디렉토리를 생성</p>
</li>
<li><p>rmdir(remove directory) : 디렉토리를 삭제(안이 비어있는 디렉토리만 삭제 가능)</p>
</li>
<li><p>mount : 디스크 장치를 표시하거나 가상 파일 시스템으로 지정한 디렉토리를 연결(마운트)</p>
</li>
<li><p>stat : 지정한 파일의 파일통계를 출력</p>
</li>
</ul>
<h2 id="파일-관련-명령어">파일 관련 명령어</h2>
<ul>
<li><p>touch : 지정한 이름의 비어있는 파일을 생성하거나 파일이 있는 경우 타임스탬프를 업데이트</p>
</li>
<li><p>cat (catenate) : 지정한 파일의 내용을 출력</p>
</li>
<li><p>head : 지정한 파일의 1라인부터 지정한 라인까지 출력 (기본지정값 10)</p>
<ul>
<li>head -n 숫자 파일명 : 숫자 수만큼 출력</li>
</ul>
</li>
<li><p>tail : 지정한 파일의 마지막 라인부터 지정한 수 만큼의 라인을 출력 (기본지정값 10)</p>
<ul>
<li>tail -n 숫자 파일명 : 숫자 수만큼 출력</li>
</ul>
</li>
<li><p>cp(copy) : 지정한 파일을 지정한 위치와 이름으로 복사</p>
<ul>
<li>cp -rfp (원본파일패스/이름 복사할파일패스/이름) : 원본파일의 하위 파일까지 복사(r), 복사위치에 파일이 존재하는 경우 덮어쓰는 옵션(f), 원본 파일의 소유자, 그룹, 권상, 시간정보를 그대로 복사하는 옵션(p)</li>
</ul>
</li>
<li><p>mv(move) : 지정한 파일을 지정한 위치와 이름으로 이동</p>
</li>
<li><p>rename (변경전파일명 변경후파일명 대상파일) : 지정한 규칙에 따라 여러 개의 파일 이름을 변경</p>
</li>
<li><p>rm (Remove) : 지정한 파일을 삭제</p>
<ul>
<li>rm -f : 물어보지 않고 삭제</li>
</ul>
</li>
<li><p>less : 상하로 커서 이동이 가능한 파일보기</p>
</li>
<li><p>ln(Link)(옵션 링크의원본파일패스/이름 링크파일패스/이름) : 지정한 파일에 대한 심볼릭링크(ln -s)나 하드링크를 생성</p>
</li>
<li><p>paste : 지정한 파일들의 행을 읽어 탭으로 구분하여 병합</p>
</li>
<li><p>dd (Dataset Dafinition) : 블록 단위로 데이터셋을 정의하여 파일을 쓰고 읽음</p>
<ul>
<li>사용법 : dd if=인풋파일 이름 of=아웃풋파일 이름 bs=바이트(크기) count=블럭을 복사 할 횟수</li>
</ul>
</li>
<li><p>tar(Tape ARchive) : 지정한 데이터 및 디렉토리를 하나의 파일로 만듦</p>
<ul>
<li><p>압축 할 경우 : tar -cvzf 타르볼파일명 디렉토리명or파일명</p>
</li>
<li><p>압축 푸는 경우 : tar -xvzf 타르볼파일명</p>
</li>
<li><p>압축파일 내용확인 : tar -tf 타르볼파일명</p>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[도메인 주도 설계(Domain Driven Design, DDD)]]></title>
            <link>https://velog.io/@coco_116/%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%A3%BC%EB%8F%84-%EC%84%A4%EA%B3%84Domain-Driven-Design-DDD</link>
            <guid>https://velog.io/@coco_116/%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%A3%BC%EB%8F%84-%EC%84%A4%EA%B3%84Domain-Driven-Design-DDD</guid>
            <pubDate>Wed, 20 Dec 2023 03:25:53 GMT</pubDate>
            <description><![CDATA[<h2 id="도메인-주도-설계ddd란-무엇일까">도메인 주도 설계(DDD)란 무엇일까?</h2>
<ul>
<li><strong>도메인 주도 설계(Domain-Driven Design, DDD)</strong>는 소프트웨어 개발에서 복잡한 비즈니스 도메인을 다루기 위한 개발 방법론 중 하나다. 이 방법론은 도메인 모델을 중심으로 하여 비즈니스 요구사항을 명확하게 이해하고, 이를 바탕으로 소프트웨어 시스템을 설계하고 구현하는 것을 강조한다.</li>
</ul>
<h3 id="도메인-주도-설계의-핵심-개념과-원칙">도메인 주도 설계의 핵심 개념과 원칙:</h3>
<ul>
<li><p>도메인 모델링: 비즈니스 도메인에 대한 명확하고 풍부한 모델을 만드는 것이 중요하다. 이 모델은 비즈니스 개념, 규칙, 프로세스 등을 포함하며, 모델은 개발자, 도메인 전문가, 그리고 다른 이해 관계자들이 공유하고 이해할 수 있는 형태여야 한다.</p>
</li>
<li><p>유비쿼터스 언어 (Ubiquitous Language): 도메인 모델은 모든 이해 관계자 간에 공유되는 언어를 가져야 한다. 개발자와 비즈니스 전문가 간의 의사 소통을 원활하게 하기 위해 동일한 용어와 개념을 사용하는 것이 중요하다.</p>
</li>
<li><p>컨텍스트 경계 설정 (Bounded Context): 큰 프로젝트에서는 여러 개의 Bounded Context로 나누어져 있을 수 있다. 각각의 컨텍스트는 특정한 비즈니스 규칙과 모델을 가지며, 이를 통합하기 위해 명확한 인터페이스가 정의된다.</p>
</li>
<li><p>엔터티 (Entity)와 밸류 객체 (Value Object): 엔터티는 유일성을 갖는 식별 가능한 객체이며, 밸류 객체는 값 자체가 중요한 객체다. 이 두 가지는 도메인 모델에서 핵심적인 역할을 한다.</p>
</li>
<li><p>애그리게이트 (Aggregate): 연관된 엔터티와 밸류 객체의 그룹을 형성하여 하나의 단일 단위로 다루는 애그리게이트를 사용하여 복잡성을 관리한다.</p>
</li>
<li><p>도메인 서비스 (Domain Service): 특정한 엔터티나 애그리게이트에 속하지 않는 도메인 규칙을 처리하기 위한 서비스다.</p>
</li>
<li><p>이벤트 소싱 (Event Sourcing): 시스템의 상태 변경을 이벤트의 시퀀스로 저장하고 이를 사용하여 현재 상태를 재구성하는 방법을 의미한다.</p>
</li>
</ul>
<p>도메인 주도 설계는 복잡한 비즈니스 도메인을 이해하고 이를 반영하는 유연하고 확장 가능한 소프트웨어 시스템을 구축하는 데 도움이 된다. 이는 특히 대규모 팀이 협업하고 복잡한 비즈니스 요구사항을 다룰 때 유용하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프레임워크와 라이브러리의 차이]]></title>
            <link>https://velog.io/@coco_116/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%99%80-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@coco_116/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%99%80-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Mon, 18 Dec 2023 07:48:33 GMT</pubDate>
            <description><![CDATA[<h3 id="1-프레임워크">1. 프레임워크</h3>
<ul>
<li><p>원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.</p>
</li>
<li><p>애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래스, 메서드들을 구현하면 된다.</p>
</li>
<li><p>예시
Java 서버 개발에 사용되는 <strong>Spring</strong>
Python 서버 개발에 사용되는 <strong>Django, Flask</strong>
안드로이드 앱 개발에 사용되는 <strong>Android</strong>
아이폰 앱 개발에 사용되는 <strong>Cocoa Touch</strong>
웹 개발에 사용되는 <strong>Angular, Vue.js</strong> 등
자바 기반의 JSP를 위한 프레임 워크 <strong>Struts</strong>
루비로 작성된 MVC패턴을 이용하는 <strong>Ruby on Rails</strong></p>
</li>
</ul>
<h3 id="2-라이브러리">2. 라이브러리</h3>
<ul>
<li><p>소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미한다.</p>
</li>
<li><p>예시
Python pip로 설치한 패키지/모듈 (<strong>tensorflow, pandas, beautifulsoup</strong> 등등)
C++의 표준 템플릿 라이브러리 (<strong>STL</strong>)
Node.js에서 npm으로 설치한 모듈
HTML의 클라이언트 사이드 조작을 단순화하는 <strong>JQuery</strong>
웹에서 사용자 인터페이스 개발에 사용되는 <strong>React.js</strong></p>
</li>
</ul>
<h3 id="3-프레임워크와-라이브러리의-차이">3. 프레임워크와 라이브러리의 차이</h3>
<ul>
<li><p>프레임워크와 라이브러리의 차이점은 <strong>&quot;제어 흐름&quot;의 권한이 어디에 있는가</strong>이다.</p>
</li>
<li><p>라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 한다.
개발 시 필요한 기능이 있을 경우 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 써야 한다.</p>
</li>
<li><p>반면 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용된다.
애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 된다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[동기와 비동기의 차이]]></title>
            <link>https://velog.io/@coco_116/%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@coco_116/%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Mon, 18 Dec 2023 02:31:10 GMT</pubDate>
            <description><![CDATA[<h3 id="1-동기synchronous-동시에-일어나는">1. 동기(Synchronous: 동시에 일어나는)</h3>
<p><img src="https://velog.velcdn.com/images/coco_116/post/a19405bd-535f-4d8b-8ae5-7b894a3083dd/image.JPG" alt=""></p>
<ul>
<li>동기는 말 그대로 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다.
바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.
순서에 맞춰 진행되는 장점이 있지만,  여러 가지 요청을 동시에 처리할 수 없다.</li>
</ul>
<h3 id="2-비동기asynchronous-동시에-일어나지-않는">2. 비동기(Asynchronous: 동시에 일어나지 않는)</h3>
<p><img src="https://velog.velcdn.com/images/coco_116/post/91408422-a467-474e-8be4-b0ca07e363b5/image.JPG" alt=""></p>
<ul>
<li>비동기는 동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을 거라는 약속이다. 하나의 요청에 따른 응답을 즉시 처리하지 않아도, 그 대기 시간동안 또 다른 요청에 대해 처리 가능한 방식이다. 여러 개의 요청을 동시에 처리할 수 있는 장점이 있지만 동기 방식보다 속도가 떨어질 수도 있다.</li>
</ul>
<h3 id="3-동기와-비동기는-상황에-따라서-각각의-장단점이-있다">3. 동기와 비동기는 상황에 따라서 각각의 장단점이 있다.</h3>
<ul>
<li>동기방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 하는 단점이 있고, 비동기방식은 동기보다 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTTP 상태코드에 대해서 설명해주세요.]]></title>
            <link>https://velog.io/@coco_116/HTTP-%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/HTTP-%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Tue, 31 Oct 2023 02:56:57 GMT</pubDate>
            <description><![CDATA[<p>HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간에 웹 페이지, 파일, 이미지, 동영상 등을 전송하기 위한 통신 프로토콜입니다. HTTP 상태 코드는 서버가 클라이언트에 반환하는 3자리 숫자로 구성된 코드입니다.</p>
<h4 id="1xx-informational-요청을-받았고-처리-중임을-나타냅니다-주로-프로토콜-처리를-위해-사용됩니다">1xx (Informational): 요청을 받았고 처리 중임을 나타냅니다. 주로 프로토콜 처리를 위해 사용됩니다.</h4>
<h4 id="2xx-success-요청이-성공적으로-처리되었음을-나타냅니다-일반적으로-200-ok가-가장-많이-사용됩니다">2xx (Success): 요청이 성공적으로 처리되었음을 나타냅니다. 일반적으로 200 OK가 가장 많이 사용됩니다.</h4>
<h4 id="3xx-redirection-요청을-완료하기-위해-클라이언트가-추가-작업이나-조치를-취해야-함을-나타냅니다-예를-들어-301-moved-permanently나-302-found가-있습니다">3xx (Redirection): 요청을 완료하기 위해 클라이언트가 추가 작업이나 조치를 취해야 함을 나타냅니다. 예를 들어, 301 Moved Permanently나 302 Found가 있습니다.</h4>
<h4 id="4xx-client-error-클라이언트의-요청에-오류가-있음을-나타냅니다-일반적으로-404-not-found나-400-bad-request가-있습니다">4xx (Client Error): 클라이언트의 요청에 오류가 있음을 나타냅니다. 일반적으로 404 Not Found나 400 Bad Request가 있습니다.</h4>
<h4 id="5xx-server-error-서버가-클라이언트-요청을-처리하는-중에-오류가-발생했음을-나타냅니다-일반적으로-500-internal-server-error나-503-service-unavailable이-있습니다">5xx (Server Error): 서버가 클라이언트 요청을 처리하는 중에 오류가 발생했음을 나타냅니다. 일반적으로 500 Internal Server Error나 503 Service Unavailable이 있습니다.</h4>
]]></description>
        </item>
        <item>
            <title><![CDATA[OAuth에 대해서 설명해주세요.]]></title>
            <link>https://velog.io/@coco_116/OAuth%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/OAuth%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Tue, 31 Oct 2023 02:53:28 GMT</pubDate>
            <description><![CDATA[<p>OAuth(Open Authorization)는 사용자가 웹 사이트 또는 앱을 사용할 때 다른 웹 사이트 또는 앱의 정보에 대한 접근 권한을 부여하는 오픈 스탠더드 프로토콜입니다. </p>
<p>OAuth를 사용하여 사용자는 자신의 데이터를 안전하게 공유하면서 다른 서비스나 애플리케이션에 대한 제어를 유지할 수 있습니다.</p>
<h3 id="oauth의-주요-구성-요소">OAuth의 주요 구성 요소</h3>
<ol>
<li>사용자 (End User): 자원 소유자이며, 자원에 대한 접근 권한을 부여하고 제어합니다.</li>
</ol>
<ol start="2">
<li><p>서비스 제공자 (Service Provider): 사용자의 데이터를 보유하고 있는 온라인 서비스입니다. 이 서비스는 OAuth를 사용하여 사용자가 다른 애플리케이션에서 자원에 접근할 수 있도록 허용합니다.</p>
</li>
<li><p>소비자 애플리케이션 (Consumer Application): 사용자의 데이터에 접근하려는 서드파티 애플리케이션 또는 웹 사이트입니다.</p>
</li>
<li><p>서버 (OAuth Server): 인증 및 권한 부여를 관리하는 서버입니다. 사용자의 인증 정보를 확인하고 액세스 토큰을 발급합니다.</p>
</li>
</ol>
<p>OAuth를 통해 사용자는 자신의 데이터를 안전하게 다른 애플리케이션과 공유할 수 있습니다. 사용자는 자신의 인증 정보를 소비자 애플리케이션에 직접 제공하지 않아도 되며, 애플리케이션은 사용자의 데이터에 접근하기 위해 OAuth를 사용하여 인증 및 권한을 얻을 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JWT, Refresh, Access Token에 대해서 설명해주세요.]]></title>
            <link>https://velog.io/@coco_116/JWT-Refresh-Access-Token%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/JWT-Refresh-Access-Token%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Tue, 31 Oct 2023 02:47:45 GMT</pubDate>
            <description><![CDATA[<h3 id="jwtjson-web-token은-웹-표준으로서-두-개체-사이에서-속성claim을-안전하게-전달하기-위한-컴팩트하고-자체적으로-설명을-가지는-방법입니다">JWT(JSON Web Token)은 웹 표준으로서 두 개체 사이에서 속성(claim)을 안전하게 전달하기 위한 컴팩트하고 자체적으로 설명을 가지는 방법입니다.</h3>
<p>일반적으로 토큰은 Access Token과 Refresh Token으로 구분됩니다.</p>
<h3 id="1-access-token">1. Access Token</h3>
<ul>
<li>액세스 토큰은 일반적으로 사용자가 리소스에 접근할 수 있도록 권한을 부여하는 데 사용됩니다.</li>
<li>클라이언트가 서버에게 자원에 대한 요청을 할 때 이 토큰을 함께 전송하여 인증을 수행합니다.</li>
<li>액세스 토큰은 일정 기간 동안 유효하며, 만료되면 갱신을 위해 리프레시 토큰을 사용합니다.</li>
</ul>
<h3 id="2-refresh-token">2. Refresh Token</h3>
<ul>
<li>리프레시 토큰은 액세스 토큰의 만료 후에 새로운 액세스 토큰을 발급받기 위해 사용됩니다.</li>
<li>액세스 토큰이 만료되면 클라이언트는 리프레시 토큰을 사용하여 새로운 액세스 토큰을 요청하게 됩니다.</li>
<li>리프레시 토큰은 일반적으로 액세스 토큰보다 더 긴 유효 기간을 가지며, 보통 보안적으로 더 강력한 보호를 받습니다.</li>
</ul>
<p>이러한 토큰들은 사용자 인증과 권한 부여를 관리하는 데 사용됩니다. 액세스 토큰은 리소스에 대한 접근을 허용하고, 리프레시 토큰은 액세스 토큰을 갱신하여 지속적으로 사용할 수 있도록 합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.]]></title>
            <link>https://velog.io/@coco_116/%EC%84%B8%EC%85%98-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EA%B3%BC-%ED%86%A0%ED%81%B0-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/%EC%84%B8%EC%85%98-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EA%B3%BC-%ED%86%A0%ED%81%B0-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Tue, 31 Oct 2023 02:44:08 GMT</pubDate>
            <description><![CDATA[<h3 id="1-세션-기반-인증">1. 세션 기반 인증</h3>
<ul>
<li><p>사용자 인증 후 서버 측에서 세션을 유지합니다. 이 세션은 서버 측에서 관리되며, 클라이언트 측에는 세션 식별자가 쿠키로 저장됩니다.</p>
</li>
<li><p>사용자가 로그인하면 서버는 사용자의 인증 정보를 기반으로 세션을 생성하고 관리합니다. 사용자가 로그아웃하거나 세션이 만료되면 세션은 삭제됩니다.</p>
</li>
<li><p>서버에 저장되는 세션 정보로 인해 서버의 자원이 사용될 수 있으며, 확장성이 제한될 수 있습니다.</p>
</li>
</ul>
<h3 id="2-토큰-기반-인증">2. 토큰 기반 인증</h3>
<ul>
<li><p>사용자 인증 후 서버는 토큰을 발급하고, 클라이언트는 이 토큰을 저장합니다.</p>
</li>
<li><p>보통 JWT(JSON Web Token)와 같은 형식으로 토큰이 구성됩니다. 이 토큰은 클라이언트 측에서 관리되며, 서버는 토큰을 확인하여 인증을 수행합니다.</p>
</li>
<li><p>서버에서 세션을 관리하지 않기 때문에 서버의 부하가 줄어들고, 확장성이 높아집니다. 토큰은 보안적으로 서명되어 있어 변조가 어렵습니다.</p>
</li>
<li><p>토큰은 만료 기간을 가질 수 있고, 이를 통해 보안 수준을 더욱 향상시킬 수 있습니다.</p>
</li>
</ul>
<h4 id="토큰-기반-인증은-분산-시스템이나-서버-간-통신을-위한-api-보안에-적합한-반면-세션-기반-인증은-전통적인-웹-애플리케이션에-더-적합합니다">토큰 기반 인증은 분산 시스템이나 서버 간 통신을 위한 API 보안에 적합한 반면, 세션 기반 인증은 전통적인 웹 애플리케이션에 더 적합합니다.</h4>
]]></description>
        </item>
        <item>
            <title><![CDATA[OSI 7계층에 대해 아는대로 설명해주세요.]]></title>
            <link>https://velog.io/@coco_116/OSI-7%EA%B3%84%EC%B8%B5%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%84%EB%8A%94%EB%8C%80%EB%A1%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/OSI-7%EA%B3%84%EC%B8%B5%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%84%EB%8A%94%EB%8C%80%EB%A1%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Tue, 31 Oct 2023 02:41:01 GMT</pubDate>
            <description><![CDATA[<p>OSI(Open Systems Interconnection) 모델은 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 분리하여 설명하는 방법입니다. 이 모델은 일반적으로 7개의 계층으로 구성됩니다. 각 계층은 네트워크 통신에서 특정한 기능을 수행하며, 데이터의 전송을 관리하고 제어합니다.</p>
<h3 id="1-물리-계층-physical-layer">1. 물리 계층 (Physical Layer)</h3>
<ul>
<li>전기적, 물리적인 특성을 기반으로 데이터를 전송합니다.</li>
<li>데이터를 전기 신호로 변환하여 물리적으로 전송하는 역할을 합니다.</li>
</ul>
<h3 id="2-데이터-링크-계층-data-link-layer">2. 데이터 링크 계층 (Data Link Layer)</h3>
<ul>
<li>인접한 네트워크 노드 간의 신뢰성 있는 전송을 보장합니다.</li>
<li>프레임 간의 오류 검출과 수정을 수행하며, 물리 계층에서 전송된 데이터를 논리적인 단위로 분리합니다.</li>
</ul>
<h3 id="3-네트워크-계층-network-layer">3. 네트워크 계층 (Network Layer)</h3>
<ul>
<li>여러 경로를 통해 패킷을 전송하고 목적지까지의 최적 경로를 선택합니다.</li>
<li>IP 주소와 라우팅을 관리하여 패킷의 목적지로 전송합니다.</li>
</ul>
<h3 id="4-전송-계층-transport-layer">4. 전송 계층 (Transport Layer)</h3>
<ul>
<li>종단 간의 데이터 전송을 관리하고, 데이터의 오류 검출과 복구를 수행합니다.</li>
<li>흐름 제어와 오류 검출을 통해 안정적인 데이터 전송을 보장합니다. 주요 프로토콜로는 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 있습니다.</li>
</ul>
<h3 id="5-세션-계층-session-layer">5. 세션 계층 (Session Layer)</h3>
<ul>
<li>통신 세션을 설정, 유지, 종료하는 역할을 합니다.</li>
<li>데이터 교환 및 동기화를 관리하여 통신 양단 간의 세션을 관리합니다.</li>
</ul>
<h3 id="6-표현-계층-presentation-layer">6. 표현 계층 (Presentation Layer)</h3>
<ul>
<li>데이터의 형식을 정의하고, 코드 간의 번역과 인코딩을 수행합니다.</li>
<li>암호화, 압축, 포맷 변환 등을 통해 응용 프로그램이 보낸 데이터를 네트워크에서 사용 가능한 형태로 변환합니다.</li>
</ul>
<h3 id="7-응용-계층-application-layer">7. 응용 계층 (Application Layer)</h3>
<ul>
<li>최종 사용자가 네트워크 서비스에 접근할 수 있도록 합니다.</li>
<li>사용자 인터페이스, 이메일, 파일 전송 등의 서비스를 제공합니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요.]]></title>
            <link>https://velog.io/@coco_116/GET-POST%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%ED%95%A8%EA%BB%98-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%9D%90%EB%A6%84%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/GET-POST%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%ED%95%A8%EA%BB%98-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%9D%90%EB%A6%84%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Tue, 31 Oct 2023 02:36:46 GMT</pubDate>
            <description><![CDATA[<p>GET과 POST는 HTTP 프로토콜에서 사용되는 두 가지 기본적인 메서드입니다. 이 두 메서드는 클라이언트(일반적으로 웹 브라우저)와 서버 간의 통신을 관리하며, 데이터의 전송 방식과 의도를 나타냅니다.</p>
<ol>
<li>GET 메서드</li>
</ol>
<ul>
<li>GET 메서드는 서버로부터 정보를 요청할 때 사용됩니다.</li>
<li>URL의 쿼리 파라미터를 통해 데이터를 전송합니다.</li>
<li>브라우저에서 주소 표시줄에 직접 입력되는 URL이나 하이퍼링크를 통해 전송됩니다.</li>
<li>보안적인 이슈로 인해 민감한 데이터를 전송하기에는 적합하지 않습니다.</li>
<li>데이터 길이에 제한이 있으며, 대부분의 브라우저는 URL의 길이에 제한을 둡니다.</li>
</ul>
<ol start="2">
<li>POST 메서드</li>
</ol>
<ul>
<li>POST 메서드는 서버로 데이터를 제출하고자 할 때 사용됩니다.</li>
<li>HTTP 요청의 본문에 데이터를 포함시켜 전송합니다. 이는 URL에 직접 노출되지 않습니다. 보안적인 측면에서 GET 메서드보다 우수하며, 비밀번호나 개인 정보와 같은 민감한 데이터를 안전하게 전송할 수 있습니다.</li>
<li>데이터 길이에 제한이 없습니다.</li>
</ul>
<p>데이터 흐름의 경우, GET 메서드에서는 URL에 데이터가 직접 노출되므로 보안적인 문제가 발생할 수 있습니다. 반면 POST 메서드는 데이터가 HTTP 요청의 본문에 포함되어 전송되므로 비교적 안전합니다. 클라이언트가 데이터를 서버로 보내면, 서버는 해당 요청을 처리하고 클라이언트에 응답을 전송합니다. 응답은 보통 HTML 페이지, JSON 데이터 또는 다른 유형의 데이터일 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?]]></title>
            <link>https://velog.io/@coco_116/ORM%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4%EC%84%9C-%EC%BF%BC%EB%A6%AC%EA%B0%80-%EB%B3%B5%EC%9E%A1%ED%95%B4%EC%A7%80%EB%8A%94-%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EA%B2%B0%ED%95%98%EB%8A%94%EA%B2%8C-%EC%A2%8B%EC%9D%84%EA%B9%8C%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/ORM%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4%EC%84%9C-%EC%BF%BC%EB%A6%AC%EA%B0%80-%EB%B3%B5%EC%9E%A1%ED%95%B4%EC%A7%80%EB%8A%94-%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EA%B2%B0%ED%95%98%EB%8A%94%EA%B2%8C-%EC%A2%8B%EC%9D%84%EA%B9%8C%EC%9A%94</guid>
            <pubDate>Tue, 31 Oct 2023 02:32:25 GMT</pubDate>
            <description><![CDATA[<p>ORM(Object-Relational Mapping)을 사용하면 일반적으로 쿼리 작성과 데이터베이스와의 상호 작용이 훨씬 편리해지지만, 복잡한 쿼리의 경우에는 ORM만으로는 처리하기 어려울 수 있습니다. 이러한 상황에서 다음과 같은 방법들을 고려해 볼 수 있습니다.</p>
<ol>
<li><p>Native SQL 사용: ORM을 사용하면서도 필요한 경우에는 네이티브 SQL을 직접 작성하여 실행할 수 있습니다. 이를 통해 ORM의 제한 사항을 극복하면서도 필요한 복잡한 쿼리를 실행할 수 있습니다. 그러나 네이티브 SQL을 사용할 때는 ORM이 관리하는 데이터와 일관성을 유지하기 위해 주의해야 합니다.</p>
</li>
<li><p>ORM의 Query Builder 사용: 대부분의 ORM은 Query Builder를 제공하여 SQL 쿼리를 동적으로 작성할 수 있는 기능을 제공합니다. 이를 통해 복잡한 쿼리를 더욱 간단하게 작성할 수 있습니다.</p>
</li>
<li><p>Stored Procedure 사용: 저장 프로시저는 데이터베이스에 미리 정의된 SQL 쿼리를 저장하는 방법을 제공합니다. 복잡한 로직이나 연산을 데이터베이스 측에서 처리하고자 할 때 유용합니다. ORM과 함께 사용할 수 있지만, 데이터베이스 종속성을 증가시킬 수 있으므로 주의가 필요합니다.</p>
</li>
<li><p>인덱스 및 성능 튜닝: 데이터베이스의 쿼리 성능을 향상시키기 위해 인덱스를 추가하고 쿼리를 튜닝할 수 있습니다. 복잡한 쿼리의 경우 성능 튜닝이 중요하며, ORM이 생성하는 쿼리의 실행 계획을 분석하여 최적화할 수 있습니다.</p>
</li>
<li><p>ORM의 성능 향상 기능 활용: 일부 ORM은 성능 향상을 위해 캐싱, 지연 로딩 등의 기능을 제공합니다. 이러한 기능을 활용하여 복잡한 쿼리의 부하를 줄일 수 있습니다.</p>
</li>
<li><p>데이터베이스 샤딩: 데이터베이스 샤딩은 대규모 데이터베이스를 분할하여 처리 부하를 분산시키는 방법입니다. 복잡한 쿼리에 대한 성능을 향상시키는데 도움이 될 수 있습니다.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[대용량 트래픽 발생 시 어떻게 대응해야 하나요?]]></title>
            <link>https://velog.io/@coco_116/%EB%8C%80%EC%9A%A9%EB%9F%89-%ED%8A%B8%EB%9E%98%ED%94%BD-%EB%B0%9C%EC%83%9D-%EC%8B%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8C%80%EC%9D%91%ED%95%B4%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/%EB%8C%80%EC%9A%A9%EB%9F%89-%ED%8A%B8%EB%9E%98%ED%94%BD-%EB%B0%9C%EC%83%9D-%EC%8B%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8C%80%EC%9D%91%ED%95%B4%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94</guid>
            <pubDate>Mon, 30 Oct 2023 01:57:16 GMT</pubDate>
            <description><![CDATA[<p>대용량 트래픽은 웹사이트나 애플리케이션에 대한 갑작스러운 수요 증가를 의미합니다. 이는 사이트 성능 저하나 다운타임으로 이어질 수 있으므로 이를 효과적으로 관리해야 합니다. 다음은 대용량 트래픽 발생 시 대응해야 할 몇 가지 방법입니다:</p>
<ol>
<li><p>스케일 아웃(Scaling Out): 서버 자원을 추가하여 트래픽 부하를 분산시킵니다. 이는 로드 밸런서를 통해 효과적으로 수행할 수 있습니다.</p>
</li>
<li><p>캐싱 사용하기: 정적 콘텐츠를 캐싱하여 서버의 부하를 줄이고 응답 속도를 향상시킵니다. CDN(Content Delivery Network)을 사용하여 전 세계적으로 콘텐츠를 배포할 수도 있습니다.</p>
</li>
<li><p>코드 최적화: 코드를 개선하여 효율적으로 실행되도록 만듭니다. 비효율적인 코드는 서버 부하를 높일 수 있습니다.</p>
</li>
<li><p>데이터베이스 최적화: 데이터베이스 쿼리를 최적화하여 더 빠르고 효율적으로 실행되도록 합니다. 인덱스를 추가하거나 쿼리를 재구성하는 등의 방법을 사용할 수 있습니다.</p>
</li>
<li><p>모니터링 및 스케일 인(Scaling In): 실시간 모니터링을 통해 서버 상태를 지속적으로 확인하고 필요에 따라 서버를 축소시켜 자원을 효율적으로 사용합니다.</p>
</li>
<li><p>클라우드 서비스 활용: 클라우드 기반 인프라를 사용하여 필요에 따라 서버를 신속하게 추가하거나 축소할 수 있습니다.</p>
</li>
<li><p>부하 테스트: 시스템이 어느 정도의 트래픽을 견딜 수 있는지 이해하기 위해 정기적인 부하 테스트를 수행합니다.</p>
</li>
<li><p>이벤트 드리븐 아키텍처 채택: 이벤트 기반 아키텍처를 도입하여 스케일링을 자동화하고 트래픽에 따라 서비스를 유연하게 조정합니다.</p>
</li>
<li><p>백업과 복구 전략 수립: 잠재적인 문제에 대비하여 백업과 복구 전략을 수립하여 데이터 유실을 방지합니다.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요?]]></title>
            <link>https://velog.io/@coco_116/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%99%9C%EC%9A%A9%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%99%9C%EC%9A%A9%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94</guid>
            <pubDate>Fri, 27 Oct 2023 01:15:35 GMT</pubDate>
            <description><![CDATA[<p><strong>객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 개발에서 사용되는 프로그래밍 패러다임 중 하나로, 현실 세계의 사물을 모델링하여 소프트웨어를 개발하는 방법</strong>입니다. 객체지향 프로그래밍은 다음과 같은 핵심 개념을 포함합니다.</p>
<ol>
<li><p>클래스와 객체: 클래스는 객체를 생성하기 위한 템플릿이며, 객체는 클래스의 인스턴스입니다. 객체는 데이터와 해당 데이터를 처리하기 위한 메서드를 포함합니다.</p>
</li>
<li><p>상속: 상속은 하위 클래스가 상위 클래스의 특성과 메서드를 상속받는 개념입니다. 이를 통해 코드의 재사용성을 높일 수 있습니다.</p>
</li>
<li><p>다형성: 다형성은 같은 이름의 메서드가 다양한 형태로 작동할 수 있는 능력을 가리킵니다. 이는 상위 클래스에 정의된 메서드가 하위 클래스에서 다르게 구현될 수 있음을 의미합니다.</p>
</li>
<li><p>캡슐화: 캡슐화는 객체의 데이터와 메서드를 하나로 묶는 개념으로, 외부에서의 접근을 제어함으로써 데이터를 보호하고 은닉합니다.</p>
</li>
</ol>
<p>객체지향 프로그래밍은 다음과 같은 이점을 제공합니다.</p>
<ol>
<li><p>코드 재사용성: 상속을 통해 코드를 재사용할 수 있으며, 이는 개발 시간을 단축시키고 코드의 유지 보수를 용이하게 합니다.</p>
</li>
<li><p>유연성과 확장성: 다형성을 통해 유연하고 확장 가능한 코드를 작성할 수 있으며, 새로운 기능을 쉽게 추가할 수 있습니다.</p>
</li>
<li><p>유지 보수성: 캡슐화를 통해 데이터를 보호하고, 변경이 용이한 모듈화된 구조를 제공하여 코드의 유지 보수를 간편하게 할 수 있습니다.</p>
</li>
<li><p>대규모 프로젝트 관리: 객체지향 프로그래밍은 대규모 프로젝트를 효과적으로 관리할 수 있도록 돕습니다. 각 객체는 독립적으로 작동하며, 이는 프로젝트의 복잡성을 줄여줍니다.</p>
</li>
</ol>
<p>이러한 장점으로 인해 객체지향 프로그래밍은 대부분의 현대 프로그래밍 언어와 시스템에서 널리 사용되고 있습니다. 객체지향 프로그래밍은 코드의 유지 보수성과 확장성을 향상시키고, 개발 과정을 단순화하여 생산성을 향상시킵니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DI, IoC에 대해 설명해주세요. ]]></title>
            <link>https://velog.io/@coco_116/DI-IoC%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/DI-IoC%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Fri, 27 Oct 2023 01:13:38 GMT</pubDate>
            <description><![CDATA[<p><strong>의존성 주입(Dependency Injection, DI)과 제어의 역전(Inversion of Control, IoC)는 소프트웨어 개발에서 객체 간의 결합을 줄이고 유연성과 유지 보수성을 향상시키는 데 사용되는 개념입니다.</strong></p>
<h3 id="의존성-주입dependency-injection-di">의존성 주입(Dependency Injection, DI)</h3>
<ol>
<li><p>의존성 주입은 객체 간의 의존성을 외부에서 주입하는 디자인 패턴입니다.</p>
</li>
<li><p>클래스는 필요한 의존성을 직접 생성하지 않고, 외부에서 제공받아 사용합니다. 이를 통해 클래스 간의 결합도를 낮출 수 있습니다.</p>
</li>
<li><p>주로 인터페이스를 통해 의존성을 주입하므로, 코드의 유연성과 확장성을 높일 수 있습니다.</p>
</li>
<li><p>DI는 생성자 주입, 메서드 주입, 속성 주입 등 다양한 방식으로 구현될 수 있습니다.</p>
</li>
</ol>
<h3 id="제어의-역전inversion-of-control-ioc">제어의 역전(Inversion of Control, IoC)</h3>
<ol>
<li><p>제어의 역전은 프로그램의 제어 흐름에 대한 권한을 프레임워크나 컨테이너로 넘기는 개념입니다.</p>
</li>
<li><p>일반적으로 애플리케이션의 흐름은 개발자가 작성한 코드에 의해 제어되지만, 제어의 역전을 통해 프레임워크나 컨테이너가 애플리케이션의 실행 흐름을 제어합니다.</p>
</li>
<li><p>이는 의존성 주입과 밀접한 관련이 있으며, 의존성 주입을 통해 객체 간의 결합을 완화하는 것이 제어의 역전을 가능하게 합니다.</p>
</li>
<li><p>IoC 컨테이너는 일반적으로 객체의 라이프사이클을 관리하고, 의존성을 주입하여 애플리케이션을 구성합니다.</p>
</li>
</ol>
<p>이러한 개념들은 코드의 재사용성과 유지 보수성을 향상시키며, 유연하고 테스트 가능한 코드를 작성하는 데 도움을 줍니다. 이를 통해 객체 간의 결합을 완화하고, 유연하고 확장 가능한 애플리케이션을 개발할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[http, https 차이점에 대해 설명해주세요]]></title>
            <link>https://velog.io/@coco_116/http-https-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/http-https-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Fri, 27 Oct 2023 01:11:14 GMT</pubDate>
            <description><![CDATA[<p><strong>HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)는 모두 웹 브라우저와 웹 서버 간에 데이터를 교환하는 데 사용되는 프로토콜입니다.</strong> 그러나 두 프로토콜 간에는 중요한 보안 차이점이 있습니다.</p>
<h3 id="http-hypertext-transfer-protocol">HTTP (HyperText Transfer Protocol)</h3>
<ol>
<li><p>HTTP는 데이터를 암호화하지 않고 전송합니다.</p>
</li>
<li><p>데이터는 평문으로 전송되므로 중간에 제3자가 데이터를 가로챌 위험이 있습니다.</p>
</li>
<li><p>웹 사이트가 HTTP를 사용하는 경우, 사용자가 입력한 개인 정보가 암호화되지 않으므로 보안에 취약할 수 있습니다.</p>
</li>
<li><p>기본적으로 HTTP는 포트 80을 사용합니다.</p>
</li>
</ol>
<h3 id="https-hypertext-transfer-protocol-secure">HTTPS (HyperText Transfer Protocol Secure)</h3>
<ol>
<li><p>HTTPS는 보안 소켓 계층(SSL 또는 TLS)을 사용하여 데이터를 암호화하여 전송합니다.</p>
</li>
<li><p>데이터가 암호화되므로 제3자가 데이터를 가로채도 해독하기 어려워 보안이 강화됩니다.
웹 사이트가 HTTPS를 사용하는 경우, 사용자와 웹 사이트 간의 통신이 암호화되어 개인 정보가 안전하게 보호됩니다.</p>
</li>
<li><p>기본적으로 HTTPS는 포트 443을 사용합니다.</p>
</li>
</ol>
<p>일반적으로 민감한 정보 전송이나 온라인 상거래와 같이 보안이 중요한 웹 사이트에서는 HTTPS를 사용하는 것이 권장됩니다. HTTPS를 사용하면 사용자 데이터의 기밀성과 무결성이 보장되어 중간자 공격으로부터 보호됩니다. 이에 따라 대부분의 웹 사이트는 HTTPS를 통해 보안된 통신을 제공하고 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TCP/UDP에 대해서 설명해주세요.]]></title>
            <link>https://velog.io/@coco_116/TCPUDP%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</link>
            <guid>https://velog.io/@coco_116/TCPUDP%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94</guid>
            <pubDate>Fri, 27 Oct 2023 01:08:39 GMT</pubDate>
            <description><![CDATA[<p><strong>TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스택의 핵심 구성 요소로, 데이터를 컴퓨터 네트워크 상에서 전송하는 데 사용됩니다.</strong> 둘 다 전송 계층에서 작동하며, 그들 간에 몇 가지 주요한 차이점이 있습니다.</p>
<h3 id="tcp-transmission-control-protocol">TCP (Transmission Control Protocol)</h3>
<ol>
<li><p>신뢰성: TCP는 신뢰성 있는 전송을 제공하기 위해 설계되었습니다. 이는 데이터의 손실이나 손상이 발생하지 않도록 보장하며, 수신자가 패킷 손실 시 재전송을 요청할 수 있습니다.</p>
</li>
<li><p>연결 지향적: TCP는 통신 시작 전에 두 호스트 간에 연결을 설정하고, 데이터를 전송한 후에는 연결을 종료합니다. 이는 신뢰성과 순서 보장을 가능하게 합니다.</p>
</li>
<li><p>흐름 제어 및 혼잡 제어: TCP는 네트워크 혼잡을 관리하기 위한 기능을 포함하여 데이터 흐름을 관리합니다. 이를 통해 전송 속도를 조절하고 네트워크 혼잡을 방지합니다.</p>
</li>
<li><p>사용 사례: 파일 전송, 이메일 전송, 웹 페이지 로딩 등 데이터의 정확성과 순서가 중요한 애플리케이션에 주로 사용됩니다.</p>
</li>
</ol>
<h3 id="udp-user-datagram-protocol">UDP (User Datagram Protocol)</h3>
<ol>
<li><p>비신뢰성: UDP는 신뢰성 있는 전송을 보장하지 않습니다. 따라서 데이터 패킷의 손실이나 손상이 발생할 수 있습니다.</p>
</li>
<li><p>연결 지향적이지 않음: UDP는 연결을 설정하지 않고 데이터를 전송합니다. 따라서 TCP보다 더 빠르게 데이터를 전송할 수 있습니다.</p>
</li>
<li><p>흐름 제어 및 혼잡 제어 없음: UDP는 흐름 제어나 혼잡 제어를 위한 메커니즘이 없기 때문에 대량의 데이터를 빠르게 전송할 수 있습니다.</p>
</li>
<li><p>사용 사례: 실시간 음성 또는 영상 스트리밍, 온라인 게임 등 실시간 통신이 필요한 애플리케이션에 주로 사용됩니다.</p>
</li>
</ol>
<p>이러한 차이로 인해, TCP는 데이터의 신뢰성과 정확성이 중요한 경우에 주로 사용되고, UDP는 속도와 실시간 통신이 중요한 경우에 사용됩니다.</p>
]]></description>
        </item>
    </channel>
</rss>