<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ahgumanhagusipda.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 08 Aug 2025 01:44:32 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ahgumanhagusipda.log</title>
            <url>https://velog.velcdn.com/images/jimin_03/profile/0f34ad1b-12e6-4025-a38e-93c76370ac37/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ahgumanhagusipda.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jimin_03" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[2025 정보처리기사 실기 2회 후기]]></title>
            <link>https://velog.io/@jimin_03/2025-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-2%ED%9A%8C-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@jimin_03/2025-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-2%ED%9A%8C-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Fri, 08 Aug 2025 01:44:32 GMT</pubDate>
            <description><![CDATA[<p><a href="https://velog.io/@jimin_03/2025-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-1%ED%9A%8C-%EC%8B%9C%ED%97%98-%ED%9B%84%EA%B8%B0">정처기 1회 후기 링크</a></p>
<p>위에 링크 1회 불합격 후기임. 여튼 그래서 결국 불합격하고 슬프지만 2회도 준비했음. 근데 이떄 1회 공부하면서 정리해둔 파일이 있어서 암기는 그것만 봤고 프로그래밍 문제를 더 많이 봤음</p>
<p>단일, 이중, 원형 연결리스트
원형 큐, 단일 큐
스택까지 다 알고리즘으로 직접 코드 짜면서 머리에 익힘</p>
<p>그리고 파이썬 문제에서 좀 치사한 문제들이 많다고 느껴져서 파이썬 내장 함수랑, 람다까지 따로 공부했음 자바에선 재귀함수, 상속 문제, 하이딩까지 했고 C언어는 따로 공부안함 ㅇㅇ</p>
<p>너무 다행인게 2회 시험에서 원형 큐 문제랑, 하이딩 문제까지 나옴
자료구조 알고리즘 따로 눈에 익히고 시험장 들어가는거 추천함
일단 1회 실기시험 친 사람들은 아마 2회시험 비교적 쉽다고 느꼇을거임</p>
<p><strong>정처기 준비하면서 알게된 팁들 공유</strong>
<a href="https://blog.naver.com/dreaming_ryan/223378483931">꿈꾸는 라이언 실기 요약집</a>
<a href="https://ss-o.tistory.com/107?category=1013699">기출변형 단답형 100제</a>
<a href="https://ss-o.tistory.com/106?category=1013699">예상 모의고사 40제</a>
<a href="https://ss-o.tistory.com/110">예상문제, 기출문제 복원</a></p>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/8ab48c0c-3fd6-4351-b427-fc0e8f2b7e73/image.png" alt="">
그리고 2회 치기 전에 파이널 모의고사 다 풀고 들어갔음</p>
<p>내 공부 순서는 이론 암기 -&gt; 각 프로그래밍 언어 공부 -&gt; 기출문제 풀이 -&gt; 예상문제 및 단답형 풀어보기 순으로 했음. 그리고 프로그래밍 언어 공부할땐 각 언어마다 나오는 문제가 정해져있음 ㅇㅇ</p>
<p>예를 들면 자바나 파이썬 같은 경우엔 객체지향언어니까 재귀함수나 상속문제 나오고
C언어는 기본적인 아스키코드나, 진수변환 같은거 나오는듯
특히 2회 시험떈 자바 Static문제 겁나 많이 나왔음!!</p>
<p>지금 가채점 하면 60점 이상 나오는데 그것도 나와봐야 알긴 해.. 근데 나 이번엔 진짜 합격하고 싶음. 
이거 본 사람들은 그냥 1트만에 합격하세요.. 계속 공부하니까 정신이 피폐해지더라</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2025 정보처리기사 실기 1회 시험 후기]]></title>
            <link>https://velog.io/@jimin_03/2025-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-1%ED%9A%8C-%EC%8B%9C%ED%97%98-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@jimin_03/2025-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-1%ED%9A%8C-%EC%8B%9C%ED%97%98-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Fri, 08 Aug 2025 01:06:30 GMT</pubDate>
            <description><![CDATA[<p>정처기 n트 하는 사람이 많다길래 도전해봄
근데 이때 정처기 시험 치고 바로 다음 날 중간고사 시험기간이라 두개 다 공부한다고 겁나 힘들었음 정처기 준비기간은 한달? 정도 잡은 거 같음</p>
<p>전공자라서 강의는 안 듣고 시나공 교재만 보고 독학했음
교재는 암기부분만 본다 생각하고 산거라 추천은 안함</p>
<p>1회 시험 후기는 암기부분은 쉬운데 프로그래밍 문제가 ㅐㅐㅐ빡셋음;;
지금도 기억나는게 이진트리문제랑, 16진수랑, 연결리스트 당연히 나오고
재귀함수도 꼬아서 내고, 서브넷도 나왔고 여튼 쉽다 생각하고 갔다가 뒤통수 씨게 맞음</p>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/c02e20a8-3e4c-4732-a50f-360bfab22360/image.png" alt=""></p>
<p>이때 시험 치고 바로 알바 갔는데 멘탈 털려서 어케 알바했는지도 기억 안남
진상도 와서 멘탈 2배로 털렷던거 같은데 일은 해야하고 정처기 답 뭐썻는지 생각하느라 일에 집중 1도 안됏음 이 다음날 바로 시험이라 공부도 했어야 햇음 (시험 망한 줄 알았는데 학점 보니까 낫배드임)</p>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/6f55403e-e9ba-477c-828f-c2823ccc422f/image.png" alt=""></p>
<p>결국 시험 불합격 나옴 물론 기대도 안했지만.. 이때 시험 다 치고 나오면서 내 부족한 부분 다 메모장에다가 썻음</p>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/e83725fa-aec6-4257-8545-eeda820847fd/image.png" alt=""></p>
<p>이 방법 추천함 난 금붕어라 시험 치고 나오면 문제 다 까먹는 사람이라 2회까지 텀도 좀 길어서 금방 까먹음 ㅇㅇ
정처기 실기 2회 치고나서 작성한 글임. 가채점은 합격임 곧 쓰러가겟음</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[강한 AI와 약한 AI]]></title>
            <link>https://velog.io/@jimin_03/%EA%B0%95%ED%95%9C-AI%EC%99%80-%EC%95%BD%ED%95%9C-AI</link>
            <guid>https://velog.io/@jimin_03/%EA%B0%95%ED%95%9C-AI%EC%99%80-%EC%95%BD%ED%95%9C-AI</guid>
            <pubDate>Mon, 05 May 2025 03:37:33 GMT</pubDate>
            <description><![CDATA[<h2 id="강한-ai와-약한-ai의-정의">강한 AI와 약한 AI의 정의</h2>
<h3 id="약한-ai">약한 AI</h3>
<p>‘인공지능’ 하면 가장 먼저 떠오르는 것은 이세돌을 상대로 4승 1패로 이겼던 구글 딥마인드의 알파고, IBM의 왓슨이다. 하지만 이 인공지능들은 모두 약한 인공지능에 속한다. 특정 영역의 문제를 푸는 인공지능 기술로, 문제해결 및 업무의 연구처리에 최적화된 인공지능이다. 따라서 이런 약한 인공지능은 알고리즘과 기초데이터, 규칙을 입력하여 학습시켜야 한다는 단점이 있다. 이런 약한 인공지능은 지금 현재사회에서 의료기술이나 서비스업, 교육 측면에서 활발하게 이용되고 있다. 하지만 인간처럼 자아를 가지지 않고 맡은 일에만 처리하여 스스로 행동을 할 수 없다. 이를 보완하기 위해 강한 AI가 탄생하게 되었다.</p>
<h3 id="강한-ai">강한 AI</h3>
<p>가트너가 선정한 2025년 10대 트렌드 중에서도 ‘Agentic AI(에이전틱 AI)’가 선정되었다. 사용자의 의도를 파악해서 자율적으로 생각하고 행동하여 인간의 개입을 최소화하는 AI를 말한다. 이처럼 AI는 계속해서 발전해나가고 있지만 아직까진 모두 약한 인공지능이다. 그렇다면 강한 AI는 무엇인가? 강한 AI는 인간의 지능을 가지고 생각을 할 수 있는 컴퓨터를 말한다. 명령을 따로 받지 않아도 스스로 일을 할 수 있는 것이다. 즉 우리가 영화로 볼 수 있었던 터미네이터가 강한 AI이다. 미래학자인 레이 커즈와일은 이 강한 인공지능의 출현 시점을 2030년으로 앞당겼으며 인간의 능력을 뛰어넘는 인공지능이 등장할 경우, 인간은 인공지능을 통제할 수 없는 상황이 올 수 있다고 경고하기도 했다. 우리는 이제 AI 혁신 시대에서 인간의 생존전략에 대해서 진지하게 고려해볼 때가 왔다.</p>
<p><a href="https://www.gartner.com/en/articles/top-technology-trends-2025">https://www.gartner.com/en/articles/top-technology-trends-2025</a> | 가트너 2025년 10대 전략 기술 트렌드</p>
<h2 id="강한-ai와-약한-ai의-기준">강한 AI와 약한 AI의 기준</h2>
<p>그렇다면 강한 AI와 약한 AI의 기준은 어떻게 되는 걸까? AI 기술은 갈수록 발전되기 때문에 시간이 변할수록 기준은 계속 바뀔 것이다. 현재 시점의 AI를 나누는 기준은 바로 ‘사고’이다. 인간은 인식과 행위의 주체인 ‘자아’가 있다. 우리는 이 자아를 이용해서 가치관이 생겨나고 생각하며 행동한다. 인공지능도 인간처럼 지식을 사용하여 문제를 해결하는 사고가 있다면 강한 AI로 구분될 수 있다. </p>
<h3 id="강한-ai-1">강한 AI</h3>
<ul>
<li>자율적 사고, 의식(자아), 감정, 이해력을 갖춘 AI</li>
<li>인간처럼 문맥을 이해하고, 자기 판단을 하며, 스스로 학습함</li>
<li>분야에 제한 없이 다양한 문제를 스스로 해결 가능</li>
</ul>
<h3 id="약한-ai-weak-ai-또는-좁은-인공지능-ani">약한 AI (Weak AI 또는 좁은 인공지능, ANI)</h3>
<ul>
<li>특정 목적에 특화된 도구로서 동작</li>
<li>의식이나 자아는 없음, 인간의 사고를 모방만 함</li>
<li>단일한 작업(예: 번역, 게임, 검색 등)에 최적화</li>
</ul>
<h2 id="ai-혁신-시대와-인간의-생존전략">AI 혁신 시대와 인간의 생존전략</h2>
<p>지금까지 우리가 사용하고 있는 chatGPT와 뤼튼, 왓슨은 모두 약한 인공지능이다. chat GPT의 경우 근로자 74%가 업무에 활용하고 있을 정도로 사회에 영향이 크다. 모든 노동자들은 이 영향을 피해갈 수 없을 것이고 오히려 AI를 자신의 경쟁력에 어떻게 활용할 수 있을 것인가에 대하여 빠르게 학습하는 노동자만이 미래의 노동시장에서 생존할 것이다. 그렇다면 강한 AI인 터미네이터가 등장하게 된다면 시대는 어떻게 변해갈까? 강한 인공지능은 의료와 돌봄서비스, 교육분야, 군사력의 중심이 로봇으로 이동될 것이다. 강한 AI의 등장으로 인간의 역할이 대체됨에 따라 노동시장에서 갈등과 불평등이 발생할 가능성이 존재한다. 로봇과 인간이 공존하는 사회를 위한 법적 틀 마련이 시급하며 강한 AI를 향한 철학적·법적·사회적 총합적 대응 체계 또한 필요하다. 즉 강한 AI는 기술문제가 아닌 ‘문명 문제’가 되는 것이다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[c언어 동적할당]]></title>
            <link>https://velog.io/@jimin_03/c%EC%96%B8%EC%96%B4-%EB%8F%99%EC%A0%81%ED%95%A0%EB%8B%B9</link>
            <guid>https://velog.io/@jimin_03/c%EC%96%B8%EC%96%B4-%EB%8F%99%EC%A0%81%ED%95%A0%EB%8B%B9</guid>
            <pubDate>Sat, 03 May 2025 13:14:45 GMT</pubDate>
            <description><![CDATA[<p>정처기에 동적할당 나와서 급하게 정리해봄. 2회차 다시 쳐야 할 거 같음.</p>
<h2 id="메모리-동적할당">메모리 동적할당</h2>
<p>변수나 배열은 컴파일 타임에 크기가 결정되는데 동적 메모리 할당은 런타임 중에 메모리의 크기를 결정하고 할당하는 방식을 말한다.</p>
<p>c언어에서는 malloc 함수를 사용하여 메모리를 동적으로 할당할 수 있다.</p>
<h3 id="힙-영역">힙 영역</h3>
<blockquote>
<p>힙(heap) 이란 C언어나 자바와 같은 프로그래밍 환경에서 원시 자료형(primitive type)이 아닌 보다 큰 크기의 데이터를 담고자 동적으로 할당하는 메모리 공간을 지칭한다.</p>
</blockquote>
<h3 id="동적할당">동적할당</h3>
<p>malloc을 호출하게 되면 힙 영역에 필요한 만큼의 메모리 공간을 확보하고 이후 반환 타입으로 해당 메모리 공간의 시작 위치를 포인터로 반환하며 할당된 메모리를 어떤 목적에 사용할지 함수에서 판단하기 어렵기 때문에, return 타입은 void * 형을 return 하며, 반환 받는 쪽에서 타입 캐스팅을 통해 사용해야한다.</p>
<pre><code>#include &lt;stdlib.h&gt;

void * malloc(size_t size);
출처: https://ttl-blog.tistory.com/1068 [Shin._.Mallang:티스토리]</code></pre><h3 id="동적할당의-문제점---메모리-누수">동적할당의 문제점 -&gt; 메모리 누수</h3>
<pre><code>int *a = malloc(5); // 5byte 메모리 공간 선언
int *b = malloc(10); // 10byte 메모리 공간 선언

b = a; // b가 a의 주소를 가리킴

free(a); // a할당 해제
free(b); // b도 a의 주소를 가리키므로, a할당 해제</code></pre><p>위 코드의 경우 b는 결국 힙 영역에 해제되지 않고 계속 남아있게 된다. 이런 상황을 메모리 누수라고 한다. 따라서 의식적으로 free를 사용하는 습관을 들여야 함!</p>
<h3 id="메모리할당-코드-예제">메모리할당 코드 예제</h3>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(void) {
    int arr[4] = { 4, 3, 2, 1 };    // 크기가 4인 배열 선언
    int* pArr;                      // int 타입을 가리키는 포인터 pArr 선언

    // int 타입 사이즈 * 4 만큼의 메모리를 동적으로 할당
    pArr = (int *)malloc(sizeof(int) * 4);

    if (pArr == NULL) {
        // 메모리 할당에 실패한 경우
        printf(&quot;malloc error\n&quot;);
        return 1;
    }

    // 배열 복사
    for (int i = 0; i &lt; 4; ++i) {
        pArr[i] = arr[i];
    }

    // 출력
    for (int i = 0; i &lt; 4; ++i) {
        printf(&quot;%d\n&quot;, pArr[i]);
    }

    // 할당한 메모리 해제
    free(pArr);

    system(&quot;pause&quot;);  // 윈도우 환경에서 프로그램 종료 전 일시 정지
    return 0;
}</code></pre><p><img src="https://velog.velcdn.com/images/jimin_03/post/06dec093-d59b-486b-a8f0-de74dae7dfab/image.png" alt=""></p>
<pre><code>#define _CRT_SECURE_NO_WARNINGS
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(void) {
    int num;
    int *pArr;
    int average = 0;

    printf(&quot;몇 개의 과목을 저장할 것인가 자네 : &quot;);
    scanf(&quot;%d&quot;, &amp;num);

    // 0개 넣으면 프로그램 종료
    if (num == 0) {
        return 0;
    }

    // 과목 개수만큼 메모리 동적할당
    pArr = (int*)malloc(sizeof(int) * num);

    // 동적할당 실패
    if (pArr == NULL) {
        printf(&quot;malloc error\n&quot;);
        exit(1);
    }

    // 점수 입력 및 저장
    for (int i = 0; i &lt; num; ++i) {
        printf(&quot;[%d/%d] 점수 입력 : &quot;, i + 1, num);
        scanf(&quot;%d&quot;, &amp;pArr[i]);
    }

    // 점수 출력
    for (int i = 0; i &lt; num; ++i) {
        printf(&quot;%d번째 과목의 점수 : %d\n&quot;, i + 1, pArr[i]);
    }

    // 평균 계산
    for (int i = 0; i &lt; num; ++i) {
        average += pArr[i];
    }

    // 정수 나눗셈으로 소수점 이하 버림
    average /= num;
    printf(&quot;평균 : %d\n&quot;, average);

    // 동적할당 해제
    free(pArr);

    system(&quot;pause&quot;);  // 윈도우 환경에서 종료 전 대기
    return 0;
}</code></pre><p><img src="https://velog.velcdn.com/images/jimin_03/post/c2ea3d4a-4ab1-4147-97ff-78c33e8ba56d/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[URI, URL, URN 정보처리기사]]></title>
            <link>https://velog.io/@jimin_03/URI-URL-URN-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC</link>
            <guid>https://velog.io/@jimin_03/URI-URL-URN-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC</guid>
            <pubDate>Sat, 19 Apr 2025 12:50:51 GMT</pubDate>
            <description><![CDATA[<p>정보처리기사 2024년 3회에 나온 문제라 정리해봄~</p>
<h2 id="urluniform-resource-locator">URL(uniform Resource Locator)</h2>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/bf147067-090b-4385-a7b3-604028d45ce4/image.png" alt="">
스키마: URL이 시작되는 부분으로 사용되는 프로토콜 지정하는 위치 http://
권한(Authority): 도메인의 정보, 호스트, 그리고 포트로 구성됨
포트: 리소스에 접근하기 위해 사용되는 포트번호
리소스 경로: 서버 상의 리소스 위치를 나타냄
매개변수: ? 기호 다음에 오며 쿼리문이다. 일반적으로 key=value 형태
앵커: URL의 끝부분에 오며 웹 페이지 내의 특정 부분으로 특정 섹션 또는 헤딩을 가리킴
프래그먼트: 문서나 리소스 내의 특정 부분을 조금 더 상세하게 가리키기 위해 사용되는 식별자이다.</p>
<h2 id="urn-uniform-resource-name-이름-규칙">URN (uniform Resource Name) 이름 규칙</h2>
<p>urn:&lt;NID:네임스페이스 식별자&gt;:&lt;NSS: 네임스페이스 특정 문자열&gt;
인터넷 리소스의 고유한 이름을 제공하는 시스템</p>
<h2 id="uri">URI</h2>
<p>인터넷의 리소스를 고유하게 식별하는 주소</p>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/2b0030f3-7723-47a3-b672-a193b1de0961/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보처리기사 기출변형 단답형 문제 풀이]]></title>
            <link>https://velog.io/@jimin_03/%EA%B8%B0%EC%B6%9C%EB%B3%80%ED%98%95-%EB%8B%A8%EB%8B%B5%ED%98%95-100%EC%A0%9C</link>
            <guid>https://velog.io/@jimin_03/%EA%B8%B0%EC%B6%9C%EB%B3%80%ED%98%95-%EB%8B%A8%EB%8B%B5%ED%98%95-100%EC%A0%9C</guid>
            <pubDate>Fri, 18 Apr 2025 07:27:11 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://ss-o.tistory.com/107?category=1013699">https://ss-o.tistory.com/107?category=1013699</a></p>
</blockquote>
<ol>
<li><p>프로토콜의 기본 요소 3가지: <strong>구문, 의미, 타이밍</strong></p>
</li>
<li><p>개체-관계 다이어그램의 기본 요소 3가지: <strong>개체, 속성, 관계</strong></p>
</li>
<li><p>객체지향프로그램의 특성 3가지: <strong>캡슐화, 추상화, 상속, 다형성, 정보은닉</strong></p>
</li>
<li><p>테스트 기반에 따른 테스트 3종류: <strong>명세기반테스트, 구조기반테스트, 경험기반 테스트</strong></p>
</li>
<li><p>프로그램 실행 여부에 따른 테스트: <strong>정적, 동적</strong></p>
</li>
<li><p>시각에 따른 테스트: <strong>검증, 확인</strong></p>
</li>
<li><p>IPv4 전송방식 3가지: <strong>유니, 멀티, 애니</strong></p>
</li>
</ol>
<ul>
<li>유니캐스트: 1대 1 통신, 출발지와 목적지가 1대1 통신</li>
<li>멀티캐스트: 1대 그룹(멀티캐스트 구독호스트) 통신, 하나의 출발지에서 다수의 특정 목적지로 데이터 전송</li>
<li>애니캐스트: 1대1 통신(목적지는 동일 그룹 내의 1개 호스트), 다수의 동일 그룹 중 가장 가까운 호스트에서 응답, IPv4에서는 일부 기능 구현, IPv6은 모두 구현 가능</li>
<li>브로드캐스트: 1대 모든 통신, 동일 네트워크에 존재하는 모든 호스트가 목적지<blockquote>
<ol start="12">
<li>리스프기반의 DRM 언어인 디지털 저작권언어를 개발한 제네록스사와 마이크로소프트사가 이를 개정하여 만든언어로 디지털콘텐츠, 웹 서비스 권리 조건을 표현한 XML 기반의 언어: <strong>XrML</strong></li>
</ol>
</blockquote>
</li>
</ul>
<ol start="13">
<li>표준 SQL을 기반으로 Oracle에서 개발한 데이터조작언어: <strong>PL/SQL</strong></li>
<li>브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부분만을 위한 데이터를 로드하는 기법이다 :<strong>AJAX</strong></li>
<li>자바스크립트 엔진으로 빌드된 이벤트 기반 자바스크립트 런타임으로, 웹 서버와 같이 확장성 있는 네트워크 애플리케이션 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 자바스크립트가 웹 브라우저에서 실행되는 것과 달리 서버 측에서 실행되는 특징을 갖는 기술 : <strong>node.js</strong></li>
<li>기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간의 정보전달, 연계, 통합을 가능하게 해주는 솔루션으로 송수신 시스템에 설치되는 어댑터를 사용하는 간접연계방식 기술은 무엇인가? <strong>EAI</strong></li>
<li>몸값과 소프트웨어의 합성어로, PC에 있는 중요한 자료를 암호화한 후, 복호화 프로그램 제공대가로 피해자에게 돈을 지급하도록 강요하는 악성코드: <strong>랜섬웨어 (몸값 + 소프트웨어)</strong><blockquote>
<ol start="22">
<li>웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법이다. <strong>: CSRF(Cross Site Request Forgery 사이트 간 요청위조)</strong></li>
<li>온라인 상에서 불법활동을 조장하기 위해 만들어진 컴퓨터 프로그램이다. 공격용 툴킷이라 불리며 보통 취약점을 이용하도록 미리 프로그램된 악성코드 등으로 구성되어 원하는 형태의 공격을 감행하거나 공격을 자동화할 수 있다. 인터넷에서 곧바로 사용할 수 있으며 키로거를 은밀히 설치시켜 불법적으로 정보를 수집해가기도 한다. : <strong>크라임웨어</strong></li>
<li>정보시스템의 침입자를 속이는 기법의 하나로, 가상의 정보시스템을 만들어놓고 실제로 공격을 당하는 것처럼 보이게 하여 해커나, 스팸, 바이러스를 유인하여 침입자들의 정보를 수집하고 추적하는 역할을 수행하는 것은? <strong>허니팟</strong></li>
</ol>
</blockquote>
</li>
<li>정해진 메모리의 범위를 넘치게 해서 원래의 리턴주소를 변경시켜 임의의 프로그램이나 함수를 실행시키는 시스템 해킹 기법: <strong>버퍼 오버플로우</strong><blockquote>
<ol start="31">
<li>공개키 암호 방식으로 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자, 정책 및 제도 등을 총칭하는 암호기술은? 
공개키 알고리즘을 통한 암호화 및 전자서명을 제공하기 위한 복합적인 보안 시스템 환경
암호화와 복호화키로 구성된 공개키를 이용해 송수신 데이터를 암호화하고 디지털 인증서를 통해 사용자를 인증하는 시스템</li>
</ol>
</blockquote>
</li>
</ol>
<p><strong>PKI 공개키 기반 구조</strong>
33. 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해, 1999년 2월 한국인터넷진흥원과 국내 암호전문가들이 순수국내기술로 개발한 대칭키 128비트 블록의 암호알고리즘이란? <strong>SEED</strong>
36. 역공학을 통한 보안취약점 공격에 대한 방지기술로 원래 코드를 변화시켜 읽기 어렵게 하거나 분석하기 어렵게 만드는 기술은 무엇인가? <strong>코드 난독화</strong>
38. 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안장비로, SQL 인젝션, XSS 등과 같은 웹 공격을 탐지하고 차단하는 기능을 갖는 장비는 무엇인가? <strong>WAF , 웹 방화벽</strong></p>
<blockquote>
<ol start="39">
<li>내부 정보 유출 방지를 의미하며, 기업 내에서 이용하는 다양한 주요정보인 기술정보, 프로젝트 계획, 사업 내용, 영업비밀, 고객정보 등을 보호하고 외부 유출을 방지하기 위해서 사용하는 보안기술은? <strong>DLP 데이터 유출방지</strong></li>
<li>소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지관리를 용이하게 하여 프로그램을 효율적으로 관리할 수 있도록 시스템을 분해하고 추상화하는 기법은? <strong>모듈화</strong></li>
<li>다음이 설명하는 제품 패키지 릴리즈 노트의 작성 항목은 무엇인가?</li>
</ol>
<ul>
<li>문서이름(릴리즈 노트 이름), 제품이름, 버전번호, 릴리즈 날짜, 참고날짜, 노트 버전 등의 정보 : <strong>헤더</strong></li>
</ul>
<ol start="46">
<li>다음이 설명하는 제품 소프트웨어 사용자 메뉴얼 작성 항목을 쓰시오.</li>
</ol>
<ul>
<li>버전, 작성자, 작성일, 검토자, 일시 검수인 등을 일자별로 기록
: <strong>문서이력정보</strong></li>
</ul>
<ol start="48">
<li>OSI 계층 중 비트를 전송하는 계층은 무엇인가? <strong>물리 계층, 프레임은 데이터링크, 패킷은 전송계층</strong></li>
</ol>
</blockquote>
<ol start="49">
<li>OSI 7계층 중 2계층에 해당하는 데이터링크에서 사용하는 전송단위는 무엇인가? <strong>프레임</strong></li>
<li>어떤 네트워크 안에서 통신 데이터를 보낼 경로를 선택하는 과정으로 패킷 스위칭 네트워크에서 패킷 전달 및 일반적으로 라우터, 브릿지, 게이트웨이, 방화벽 또는 스위치로 불리는 중간노드를 거쳐 출발지로부터 최종 목적지까지 논리적으로 주소가 부여된 패킷의 변환을 총괄하는 기능의 이름: <strong>라우팅</strong></li>
<li>자바에서 데이터베이스를 실행하기 위해 데이터베이스를 연결해주는 응용 프로그램 인터페이스는 무엇인가? <strong>JDBC!!!!!!!!! 객체지향설계에서 배우잖아 외워라.</strong></li>
<li>리눅스 환경에서 사용하는 MYSQL 데이터베이스를 기반으로 제작하는 GPL 오픈소스 데이터베이스 : <strong>마리아DB</strong></li>
<li>자바를 움직이게 하기 위해 개발한 서버인 WAS 의 일종이며 웹 서버에서 서블릿, JSP, 빈즈와 같은 자바 코드를 이해하기 위해서는 이것과 같은 자바를 이해하는 엔진이 있어야 한다. 비용이나 성능면에서는 자바 기반 웹서버를 구성할 때 리눅스, 아파치, 이것 조합을 많이 사용한다 이것은 무엇인가? <strong>톰캣</strong></li>
<li>개발자가 소스코드를 작성하여 컴파일하면, .class 라는 확장자를 갖는 바이트코드가 생성되며, 자바의 핵심구성요소인 이것에 의해 실행되어지므로 서로 다른 플랫폼에서도 동일한 프로그램이 동작할 수 있게 된다. 이것은 무엇인가 <strong>JVM</strong><blockquote>
<ol start="62">
<li>정보시스템 운영 중 서버가 다운되거나 자연재해나 시스템 장애 등의 이유로 고객에게 서비스가 불가능한 경우가 종종 발생한다. 이와 같은 상황에서 비상사태 또는 업무 중단 시점부터 업무가 복구되어 다시 정상 가동될 때까지의 시간을 의미한다. 이것은 무엇인가? <strong>RTO 재해복구시간</strong></li>
<li>정보시스템 기반 구조의 전체 또는 일부를 재해가 발생한 곳과 다른 위치에 구축하고 재해가 발생하였을 경우 이를 신속하게 복구하여 비즈니스에 대한 영향을 최소화하기 위한 제반 계획 및 시스템을 말하며 관련 기술요소로 HA, FTS, RAID 등이 있다. 무엇에 대한 설명인가? <strong>DRS 재해복구시스템</strong></li>
</ol>
</blockquote>
</li>
<li>컴퓨터와 사람의 언어 사이의 상호작용에 대해 연구하는 컴퓨터과학과 어학의 한 분야로, 정보검색분야에서는 이용자와의 자연스러운 대화를 통해 이용자의 의도를 컴퓨터가 파악해 보다 정확한 정보를 다양한 형태의 데이터로부터 취합해 제공하는 데에 활용된다 : <strong>NLP 자연어 처리</strong></li>
<li>()는 정적테스트의 가장 일반적인 유형으로, 사전에 정의된 코드 작성 규칙을 기반으로 소스코드를 점검하여 작성 규칙에 위반되는 소스코드를 추출하는 분석도구로 애플리케이션 개발 시 대부분 사용되며, 빌드 도구와 연계하여 빌드, 배포 수행 시 자동적으로 점검할 수 있다 : <strong>코드 인스펙션,
인스펙션은 정형적이고 체계적인 방법으로 소프트웨어의 코드나 문서를 검토하는 절차입니다. 주로 오류 및 결함을 찾아내기 위해 엄격한 규칙에 따라 수행된다. 워크스루는 소프트웨어 개발 단계에서 문서나 코드를 그룹의 구성원들과 함께 순회하면서 검토하는 방법이다.</strong></li>
<li>유지보수 생산성 향상을 목적으로 기능을 변경하지 않고 복잡한 소스코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법 또는 소프트웨어 모듈의 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화하여 소프트웨어의 유지보수성을 향상시키는 기법은 무엇인가? <strong>리팩토링</strong></li>
<li>복잡한 인스턴스를 조립하여 만드는 구조로, 복합 객체를 생성할 때 객체를 생성하는 과정과 객체를 구현하는 과정을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있는 디자인 패턴은 무엇인가? <strong>빌더패턴</strong><blockquote>
<ol start="87">
<li>클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴으로 undo 기능을 개발할 때 사용한다. 무슨 패턴인가? <strong>메멘토패턴</strong></li>
</ol>
</blockquote>
</li>
<li>Linux 운영체제 위에서 구동하며 휴대전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준응용 프로그램을 포함하고 있는 소프트웨어 스택이자 리눅스 모바일 운영체제. <strong>안드로이드</strong><blockquote>
<ol start="92">
<li>파일럿을 뜻하는 그리스어에서 유래한 용어로 리눅스 재단에 의해 관리되는 컨테이너화된 애플리케이션의 자동배포, 스케일링 등을 제공하는 오픈소스 기반의 관리 시스템은 무엇인가? <strong>쿠버네티스</strong></li>
<li>구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어로 현재 Java, C++, 그리고 기타언어에서 적용이 가능하도록 작성되었으며 아파치 하둡으로 대표되는 소프트웨어 프레임워크는 무엇인가? <strong>맵 리듀스</strong></li>
</ol>
</blockquote>
</li>
<li>Http, https, smtp를 통해서 XML 기반의 데이터를 주고받는 프로토콜로 웹 서비스 방식에서 HTTP 기반의 ()을/를 사용하여 송수신한다. () 대신 레스트 풀 프로토콜로 대체할 수 있다 <strong>SOAP</strong></li>
<li>웹 서비스명, 제공위치, 메시지 포맷, 프로토콜 정보 등 웹서비스에 대한 상세 정보를 XML 형태로 구현한 기술은 무엇인가 <strong>WSDL(Web Services Description Language)</strong></li>
<li>웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트리이자 표준은 무엇인가? <strong>UDDI</strong><blockquote>
<ol start="99">
<li>소프트웨어 개발 과정에서 변경사항을 관리하는 기법을 형상관리라고 한다. &lt;보기&gt;를 보고 형상관리의 절차를 순서대로 서술하시오.
&lt;보기&gt; ㄱ.형상통제 ㄴ.형상기록 ㄷ. 형상감사 ㄹ. 형상 식별</li>
</ol>
<p><strong>정답: ㄹ&gt;ㄱ&gt;ㄷ&gt;ㄴ</strong></p>
<ol start="100">
<li>형상관리에서 사용하는 언어로써, 관리 대상을 형상관리 시스템으로 일괄 전송하여 압축, 암호화한 후에 파일의 현재버전과 변경 이력 정보를 저장하는 저장소로 뜻하는 용어는 무엇인가? <strong>리포지토리</strong></li>
</ol>
</blockquote>
</li>
</ol>
<p>회복테스트: 고의로 실패 유도 후 정상 복귀 여부 확인하는 테스트
안전테스트: 소스 내의 보안적인 결함 확인
강도테스트: 과부화시 정상적인 동작을 하는지 확인하는 테스트
성능테스트: 응답시간, 특정시간, 처리량 등 시스템 반응 속도 테스트
구조테스트: 시스템 내부의 경로나 소스코드 복잡도 테스트
병행테스트: 변경된 시스템과 기존의 시스템에 동일한 데이터 입력 후 결과비교</p>
<p>릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 상황 (이상현상)
데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적인 현상(반정규화)
정규화된 앤티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법 (정규화)
인가받지 않은 사용자로부터 데이터베이스를 보장하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위를 이르는 말 (트랜잭션)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보처리기사 오답 정리]]></title>
            <link>https://velog.io/@jimin_03/%EC%A0%95%EC%B2%98%EA%B8%B0-%EC%98%A4%EB%8B%B5-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@jimin_03/%EC%A0%95%EC%B2%98%EA%B8%B0-%EC%98%A4%EB%8B%B5-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 14 Apr 2025 12:56:03 GMT</pubDate>
            <description><![CDATA[<h3 id="2023년-3회">2023년 3회</h3>
<ul>
<li><p>(     )은/는 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식이다.</p>
</li>
<li><p>셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때 다중화를 하지 않고 셀단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.</p>
</li>
<li><p>가상 채널 (Virtual Channel) 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이(53바이트) 패킷을 사용하며 통계적 다중화 방식을 이용한다.
답: ATM(비동기 전송 방식)</p>
</li>
</ul>
<hr>
<p>다음은 클라우드에 대한 유형 문제이다. 괄호안에 알맞는 답을 보기에 골라 작성하시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/fd1f4108-bc4c-40c6-9a1f-6a1520b7d311/image.png" alt="">
① laaS ② PaaS ③ SaaS</p>
<hr>
<p>다음 자바 코드를 실행할 경우 에러가 발생이 된다. 에러가 발생하는 라인을 작성하시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/be5ce9d4-0deb-423b-8968-bcc62458e976/image.png" alt="">
-&gt; 7</p>
<hr>
<h3 id="2024년-2회">2024년 2회</h3>
<ul>
<li>Network layer에서 IP패킷을 암호화하고 인증하는 등의 보안을 위한 표준이다. </li>
<li>기업에서 사설 인터넷망으로 사용할 수 있는 VPN을 구현하는데 사용되는 프로토콜이다.</li>
<li>AH(Authentication Header)와 ESP(Encapsulating Security Payload)라는 두 가지 보안 프로토콜을 사용한다.
답: IPsec</li>
</ul>
<hr>
<p>다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.</p>
<pre><code>#include 
#include 

void func(char *d, char *s) {
    int sum = 0;
    while (*s) {
        *d = *s;
        d++;
        s++;
    }
    *d = &#39;&#39;;
}

int main() {
    char* str1 = &quot;first&quot;;
    char str2[50] = &quot;teststring&quot;;
    int result = 0;
    func(str2, str1);

    for (int i = 0; str2[i] != &#39;&#39;; i++) {
        result += i;
    }
    printf(&quot;%d&quot;, result);
    return 0;
}</code></pre><p>답: 10</p>
<hr>
<p>다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.</p>
<pre><code>public class Main {
    public static String rf(String str, int index, boolean[] seen) {
        if(index &lt; 0) return &quot;&quot;;
        char c = str.charAt(index);
        String result = rf(str, index-1, seen);
        if(!seen[c]) {
            seen[c] = true;
            return c + result;
        }
        return result;
    }
    public static void main(String[] args) {
        String str = &quot;abacabcd&quot;;
        int length = str.length();
        boolean[] seen = new boolean[256];
        System.out.print(rf(str, length-1, seen));
    }
}</code></pre><p>답: dcba</p>
<hr>
<h3 id="2023년-2회">2023년 2회</h3>
<p>다음은 JAVA 코드 문제이다. 가지고 있는 돈이 총 4620원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 보기의 조건에 맞춰 &quot;최소한의 코드&quot;를 작성해 빈 괄호 안을 채우시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/3e5e777b-5bcc-443f-9cbb-d4f29c7e416f/image.png" alt="">
[보기]
아래 주어진 항목들을 응용하여 괄호 안 코드를 작성.
변수 : m
연산자 : / , %
괄호 : [ , ] , ( , )
정수 : 1000, 500, 100, 10</p>
<pre><code>정답
m / 1000
(m % 1000) / 500
(m % 500) / 100
(m % 100) / 10</code></pre><hr>
<p>다음은 테이블에 데이터를 삽입하기 위한 과정이다. 보기의 조건식에 맞게 데이터 삽입을 위한 SQL문을 작성하시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/5168cd67-c978-408f-8cf7-d27423341238/image.png" alt=""></p>
<p>CREATE TABLE 학생 (
  학번 int,
  이름 varchar(20),
  학년 int,
  전공 varchar(30),
  전화번호varchar(20)
);</p>
<ul>
<li>[조건]
문자열의 경우 작은 따음표를 사용.(&#39; &#39;)</li>
</ul>
<pre><code>INSERT INTO 학생(학번,이름,학년,전공,전화번호)
VALUES(22106940,&#39;정처기&#39;,4,&#39;컴퓨터공학&#39;,&#39;010-1234-5678&#39;);</code></pre><hr>
<p>다음 내용에서 설명하는 문제에 대해 보기에 알맞는 답을 골라 작성하시오.
[보기]
EAC, FEC, hamming, CRC, PDS, parity, BEC</p>
<p>( 1 ) Code는 데이터 전송시 1 비트의 에러를 정정할 수 있는, 오류정정부호의 일종으로 미국의 Bell 연구소의 Hamming에 의해 고안되었다.
선형블록부호 및 순회부호에 속에 속한다.</p>
<p>( 2 ) 은/는 송신측이 전송할 문자나 프레임에 부가적 정보(Redundancy)를 첨가하여 전송하고 수신측이 이 부가적 정보를 이용하여 에러검출 및 에러정정을 하는 방식이다.</p>
<p>( 3 ) 은/는 공격자가 전자 메일을 사용하여 상대방이 금전을 보내거나 기밀 회사 정보를 누설하도록 유도하는 사이버 범죄의 일종이다.</p>
<p>공격자는 신뢰할 수 있는 인물로 가장한 다음 가짜 청구서의 지불을 요청하거나 다른 사기에서 사용할 중요한 데이터를 요구한다.</p>
<p>( 4 ) 은/는 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어이다.</p>
<p>( 5 ) 은/는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.</p>
<pre><code>1. hamming
2. FEC
3. BEC
4. parity
5. CRC</code></pre><hr>
<p>다음은 HDLC 프로토콜에 대한 설명이다. 보기 안에 알맞는 &#39;기호&#39; 를 골라 작성하시오.
[보기]
ㄱ. 연결제어     ㄴ. 감독     ㄷ. 정보     ㄹ. 양방향 응답     ㅁ. 익명     ㅂ. 비번호
ㅅ. 릴레이    ㅇ. 동기균형     ㅈ. 동기응답    ㅊ. 비동기균형     ㅋ. 비동기응답</p>
<p>( 1 ) 프레임은 Seq, Next, P/F의 필드를 가진다. 또한 맨 처음 비트를 0으로 가진다. Seq는 송신용 순서번호를 가지고 있다. Next는 응답용 순서번호를 가진다. P/F는 P가 1로 설정된 경우 주국에서 종국에 데이터 전송을 허용하는 것을 의미하고 F가 1로 설정된 경우 종국에서 주국으로 데이터 전송을 하는 것을 의미한다.</p>
<p>( 2 ) 프레임은 맨 앞의 필드가 1로 되어 있어 정보 프레임이 아니라는 것을 나타내고 다음 비트가 0이 나와있다. Type의 경우에는 2비트를 가지고 있어 4가지의 종류로 나누어진다.  데이터를 보내는 역할이 아니라 응답의 기능을 수행하므로 Seq에 대한 값은 필요가 없고 다음 프레임을 요구하는 Next만 존재한다.</p>
<p>( 3 ) 프레임은 순서 번호가 없는 프레임을 의미한다. 첫 번째 비트와 두 번째 비트가 모두 1로 설정되어 있다. 여러 종류를 가지고 있는데 Type의 2비트와 Modifier의 3비트를 합쳐 5비트를 통해 종류를 나눈다.</p>
<p>( 4 ) 은/는 두 호스트 모두 혼합국으로 동작한다. 양쪽에서 명령과 응답을 전송할 수 있다.</p>
<p>( 5 ) 은/는 불균형 모드로 주국의 허락 없이 종국에서 데이터를 전송할 수 있다.</p>
<pre><code>1. ㄷ
2. ㄴ
3. ㅂ
4. ㅊ
5. ㅋ</code></pre><hr>
<p>다음 괄호 안에 알맞는 답을 작성하시오.
( ) 란 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것이다.
키에 대한 ( ) 값을 사용하여 값을 저장하고 키-값 쌍의 갯수에 따라 동적으로 크기가 증가한다.
( ) 값 자체를 index로 사용하기 때문에 평군 시간복잡도가 O(1) 로 매우 빠르다
( ) 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
( ) 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다.
답 = 해시(hash)</p>
<hr>
<h3 id="2023년-1회">2023년 1회</h3>
<p>(    )은/는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다.</p>
<p>(    ) 프로토콜은 보통 다른 호스트나 게이트웨이 와 연결된 네트웍에 문제가 있는지 확인하기 위한 목적으로 주로 사용된다.</p>
<p>(    ) 을/를 이용한 공격에는 (    ) Flooding가 있는데 ping 명령어를 통한 (     ) 패킷을 연속적으로 계속 보내어 서버의 요청에 응답으로 인한 다른작업을 하지 못하도록 하는 공격이다.
답: ICMP</p>
<hr>
<p>다음 성적 테이블에서 과목별 점수의 평균이 90점 이상인 &#39;과목이름&#39;, &#39;최소점수&#39;, &#39;최대점수&#39; 를 검색하고자 한다. [조건]을 참고하여 적합한 SQL문을 작성하시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/8f7be663-bf66-4afe-8e18-954c5ea250bf/image.png" alt="">
[조건] </p>
<ul>
<li>WHERE사용하지 말아야 한다.</li>
<li>SELECT절에 별칭을 사용하여 작성해야 한다.</li>
<li>SQL 구문 마지막에 세미콜론(;)은 생락 가능하다.</li>
<li>반드시 GROUP BY와 HAVING 을 사용해야 한다.</li>
<li>집계 함수를 사용해야 한다.<pre><code>SELECT 과목이름 ,MIN(점수) AS 최소점수 ,MAX(점수) AS 최대점수
FROM 성적
GROUP BY 과목이름 HAVING AVG(점수) &gt;= 90</code></pre></li>
</ul>
<hr>
<p>다음 Java 코드에 대한 출력 값을 작성하시오.</p>
<pre><code>class Parent {
    int x = 100;
    Parent() {
        this(500);
    }

    Parent(int x) {
        this.x = x;
    }

    int getX() {
        return x;
    }
}

class Child extends Parent {
    int x = 4000;
    Child() {
        this(5000);
    }

    Child(int x) {
        this.x = x;
    }
}

public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
        System.out.println(obj.getX());
    }
}</code></pre><p>답: 500
부모 클래스에 매개변수가 없는 경우
자식 클래스 생성자 호출시 부모 클래스 생성자 자동 호출
문제의 경우 1)에 해당하므로 Child() 호출하면 Parent()가 먼저 호출&gt;Child()호출됨
따라서 소스의 흐름을 보면
Parent() 호출 &gt; Child() 호출 로 진행됨.
이 과정에서 각각 x값이 500, 5000으로 저장되고,
getX()함수는 Parent에만 있으므로 500 출력</p>
<hr>
<p>다음은 스키마와 관련된 내용이다. 각 괄호안에 알맞는 답을 작성하시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/cf225038-6a4b-4a37-8c64-0180f1a5f6b1/image.png" alt=""></p>
<pre><code>1. 외부

2. 개념

3. 내부</code></pre><hr>
<h3 id="2024년-3회">2024년 3회</h3>
<p>아래 코드에서 출력되는 값을 작성하시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/f8624847-4d30-4eb0-91f5-19c168a6e2fd/image.png" alt=""></p>
<p>B0 =&gt; 제네릭타입은 object로 반환됨</p>
<hr>
<p>아래 설명에 맞는 테스트 커버리지를 보기에서 골라 기호로 작성하시오.</p>
<ol>
<li><p>코드 내의 각 분기점이 true 또는 false로 평가될 때마다 해당 분기점이 모두 테스트 되는 것을 목표로 한다.  각 분기점이 모든 가능한 경로로 실행되었는지 확인하는 데 사용되는 커버리지 (     )</p>
</li>
<li><p>코드의 흐름을 여러 갈래로 나누는 조건문 또는 선택문을 의미한다. 예를 들어, if-else 문이나 switch 문에서 조건에 따라 실행 경로가 달라질 때를 의미한다.  (     )</p>
</li>
<li><p>개별 조건문 내에 있는 각각의 조건이 true와 false 모두를 만족하도록 테스트하는 것을 의미한다. 예를 들어, if (A &amp;&amp; B)와 같은 구문에서 A와 B가 각각 true와 false가 되는 경우를 테스트하는 것이 목표이다.  (     )</p>
</li>
</ol>
<p>(보기)
㉠ 조건/결정 커버리지
㉡ 결정 커버리지
㉢ 조건 커버리지
㉣ 분기 커버리지
㉤ 변경 조건/결정 커버리지
㉥ 문장 커버리지
㉧ 다중 조건 커버리지</p>
<p>㉥ 문장
㉣ 분기
㉢ 조건</p>
<hr>
<h4 id="홍달쌤-자바-교안">홍달쌤 자바 교안</h4>
<pre><code>class A {
    A() {System.out.printf(&quot;%d&quot;, 10);}
}
class B extends A{
    B(int a) {System.out.printf(&quot;%d&#39;, a);}
}
class C extends B {
    C(int a){
        super(a/10);
        System.out.println(&quot;%d&quot;,a);
    }
}

&lt;출력결과&gt;
10 100 1000</code></pre><hr>
<h4 id="홍달쌤-자바-교안-1">홍달쌤 자바 교안</h4>
<pre><code>class Calculate {
    public int cal(int a, int b) {
        return a - b;
    }

    public float cal(float a, float b) {
        return a - b;
    }

    public double cal(double a, double b) {
        return a + b;
    }
}

public class Example {
    public static void main(String[] args) {
        Calculate a = new Calculate();
        System.out.println(a.cal(31, 69));         // ①
        System.out.println(a.cal(24.8, 5.1));      // ②
    }
}
✅ 출력: -38
✅ 출력: 29.9
24.8, 5.1 → double 리터럴
오버로딩된 메서드 중 cal(double, double)이 정확히 매치
만약 정확히 매치가 안된다면 컴파일 오류가 난다
c나 c++ 에선 묵시적 형변환이 되지만 자바에서는 형변환이 되지 않아 오류가 발생한다.</code></pre><p><img src="https://velog.velcdn.com/images/jimin_03/post/eed4ab98-573d-4cd5-b2d2-83bc8fb1e558/image.png" alt=""></p>
<hr>
<h4 id="홍달쌤-자바-교안-2">홍달쌤 자바 교안</h4>
<pre><code>class Ref {
    int a;

    Ref(int x) {
        a = x;
    }

    int sum(Ref obj) {
        int k;
        k = obj.a - a;
        a = 10;
        obj.a = 20;
        return k;
    }
}

public class Main {
    public static void main(String[] args) {
        Ref obj1 = new Ref(3);
        Ref obj2 = new Ref(4);
        int k1 = obj2.sum(obj1);

        System.out.println(&quot;k1 = &quot; + k1);
        System.out.println(&quot;obj1.a = &quot; + obj1.a);
        System.out.println(&quot;obj2.a = &quot; + obj2.a);
    }
}
[sum 메서드 안 동작]
k = obj.a - a; // 3 - 4 = -1
a = 10;        // this.a = obj2.a → 10
obj.a = 20;    // obj.a = obj1.a → 20
✅ 최종 출력 결과
k1 = -1
obj1.a = 20
obj2.a = 10</code></pre><hr>
<h4 id="홍달쌤-자바-교안-3">홍달쌤 자바 교안</h4>
<pre><code>public class SaTest{
    public static void main(String args[]){
        String numbers[] = {&quot;first&quot;, &quot;second&quot;, &quot;third&quot;}
        for(String s:numbers)
            System.out.println(s);
    }
}</code></pre><p><strong>String s:numbers</strong> 중요!</p>
<h4 id="수제비">수제비</h4>
<pre><code>class A {
    static { System.out.println(&quot;A static&quot;); }
    {System.out.println(&quot;A instance&quot;); }
    public A() {System.out.println(&quot;A constructor&quot;);}
}

class B extends A {
    static{ System.out.println(&quot;B static&quot;); }
    {System.out.println(&quot;B instance&quot;); }
    public B() {System.out.println(&quot;B constructor&quot;);}
}

class Main {
    public static void main(String[] args){
        B b1 = new B();
        A b2 = new B();
    }
}
출력결과
A static
B static
A instance
A constructor
B instance
B constructor
A instance
A constructor
B instance
B constructor

instance는 객체 생성시 실행하게 된다.
static -&gt; instance -&gt; 생성자 순으로 호출된다.
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[정처기 프로그래밍 언어 활용 문법 정리]]></title>
            <link>https://velog.io/@jimin_03/%EC%A0%95%EC%B2%98%EA%B8%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4-%ED%99%9C%EC%9A%A9-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@jimin_03/%EC%A0%95%EC%B2%98%EA%B8%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4-%ED%99%9C%EC%9A%A9-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 14 Apr 2025 10:41:07 GMT</pubDate>
            <description><![CDATA[<h3 id="8진수를-10진수로-변환">8진수를 10진수로 변환</h3>
<p>345(8)</p>
<ul>
<li>첫번째 자리 : 3 x 8^2 = 3 x 64 = 192</li>
<li>두번째 자리 : 4 x 8^1 = 4 x 8 = 32</li>
<li>세번째 자리 : 4 x 8^0 = 4 x 1 = 4
총합 192+32+5 = 229(10)</li>
</ul>
<h3 id="16진수를-10진수로-변환">16진수를 10진수로 변환</h3>
<p>1AB(16)
1 x 16^2 = 256
A(10) x 16^1 = 160
B(11) x 1 = 11
256+160+11 = 427(10)</p>
<h3 id="2진수를-10진수로-변환">2진수를 10진수로 변환</h3>
<p>10100(2)</p>
<ul>
<li>첫번째 자리 : 1 x 2^4 = 16 </li>
<li>두번째 자리 : 0 x 2^3 = 0</li>
<li>세번째 자리 : 1 x 2^2 = 4</li>
<li>네번째 자리 : 0 x 2^1 = 0</li>
<li>다섯번째 자리 : 0 x 2^0 = 0
16+4 = 20(10)</li>
</ul>
<hr>
<h3 id="연산자-우선순위">연산자 우선순위</h3>
<p>단항연산자 ! ~ ++ -- size of
산술연산자 * / % + -
시프트연산자 &lt;&lt; &gt;&gt;
관계연산자 &lt; &lt;= &gt;= &gt; == !=
비트연산자 &amp; ^ |
논리연산자 &amp;&amp; ||
조건연산자 ? :
대입연산자 = += -= *= /= %= &lt;&lt;= &gt;&gt;=
순서연산자 .</p>
<hr>
<h3 id="자료형-크기">자료형 크기</h3>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/a63e67ed-904f-458e-88e4-ef2324951010/image.png" alt=""></p>
<hr>
<h3 id="java-향상된-반복문">Java 향상된 반복문</h3>
<pre><code>for(String str:arr){
    System.out.println(str); 
}</code></pre><pre><code>for(int i=0; i&lt;arr.length; i++){
    System.out.println(arr[i]);
}</code></pre><h3 id="c언어-포인터">C언어 포인터</h3>
<p><code>char *s = &quot;gilbut&quot;</code></p>
<pre><code>for (int i=0; i&lt;6; i+=2){
    printf(&quot;%c, &quot;, s[i]);
    printf(&quot;%c, &quot;, *(s+i));
    printf(&quot;%s, &quot;, s+i);
}</code></pre><h4 id="풀이">풀이</h4>
<pre><code>i = 0 ) s+i = g   *(s+i) = g  s+i = gilbut
i = 2 ) s+i = l   *(s+i) = l  s+i = lbut
i = 4 ) s+i = u   *(s+i) = u  s+i = ut
</code></pre><p><img src="https://velog.velcdn.com/images/jimin_03/post/e3d3aa51-cb78-45bf-aabe-d744eb0ed591/image.png" alt=""></p>
<hr>
<h3 id="람다식">람다식</h3>
<ul>
<li>어떤 문제를 해결하기 위한 과정을 수학식으로 표현한 것</li>
<li>프로그래밍 언어에서 람다식은 수학적 연산을 수행하는 메소드 간소화</li>
</ul>
<p>lambda 변수명 : 수학식</p>
<ul>
<li>변수명: 인수로 전달받은 값을 저장할 변수의 이름 지정</li>
<li>수학식: 수행할 연산을 하나의 식으로 풀어 입력<pre><code>def func(x):
  return x * x - 3
print(func(10))</code></pre><pre><code>func = lambda x : x * x - 3
print(func(10))</code></pre></li>
</ul>
<hr>
<h3 id="python---딕셔너리">python - 딕셔너리</h3>
<ul>
<li>딕셔너리는 연관된 값을 묶어 저장하는 용도로 사용</li>
<li>리스트와 달리 딕셔너리는 사용자가 원하는 값을 키로 지정해 사용</li>
<li>딕셔너리에 접근할 때는 딕셔너리 뒤에 대괄호([])를 사용하며, 대괄호 안에 키를 지정한다.</li>
<li>중복된 키는 허용안함!★
딕셔너리명 = {키1: 값1, 키2: 값2, 키3: 값3}
딕셔너리명 = dict({키1: 값1, 키2: 값2, 키3: 값3})</li>
</ul>
<h3 id="python---투플">python - 투플</h3>
<ul>
<li>투플은 직접적인 원소 변경 불가하다.</li>
<li>투플을 만들 때 주의사항은 1개의 데이터만 가질 때에 무조건 , 붙여줘야 함 (1,) 안 그러면 타입형태로 선언된다.<pre><code>tuple1 = (1, 2, 3)
tuple2 = 1, 2, 3  
</code></pre></li>
</ul>
<p>tuple3 = (1,)
tuple4 = (1)  </p>
<pre><code>
### python - slice
range(최종값) 0에서 최종값 -1까지 연속된 숫자 생성
range(초기값, 최종값) 초기값 ~ 최종값 -1
range(초기값, 최종값, 증가값) 초기값 ~ 최종값-1 증가값 증가 및 감소

### python - 슬라이스
**객체명[:] 또는 객체명[::]** 객체의 모든 요소 반환
**객체명[초기위치:]** 초기위치에서 마지막위치까지
**객체명[:최종위치]** 객체의 0번째 위치에서 최종위치 -1까지
**객체명[::증가값]** 객체의 0번째 위치에서 마지막 위치까지 증가값만큼 증가하며 반환

---
### python - 리스트 관련 주요 메서드
| 메서드 | 설명 | 중복 검사 |
|--------|------|-----------|
| `index(값)` | 값이 처음 등장하는 인덱스 반환 | ✅ O |
| `count(값)` | 값이 몇 개 들어 있는지 반환 | ✅ O |
| `sort()` | 오름차순 정렬 (reverse=True로 내림차순) | ❌ X |
| `copy()` | 리스트 복사 (얕은 복사) | - |
| `pop()` | 마지막 요소 삭제하고 반환 | - |
| `append(값)` | 리스트 끝에 값 추가 | ❌ X |
| `extend([값1, 값2])` | 리스트 끝에 여러 값 추가 | ❌ X |
| `len()` | 리스트 길이 반환 | - |
| `push()` | ❌ 존재하지 않음. 대신 `append()` 사용 | ❌ X |

### `set` 메서드 (중복 자동 제거 O)
중복을 막고싶다면 set() 이용</code></pre><p>s = set()
s.add(1)
s.add(1)
print(s)  # {1}</p>
<pre><code>| 메서드 | 설명 | 중복 검사 |
|--------|------|-----------|
| `add(값)` | 집합에 값 하나 추가 | ✅ O |
| `update(이터러블)` | 여러 값을 한 번에 추가 | ✅ O |

---
#### 스크립트 언어: HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 언어
#### 자바스크립트 언어: 웹 페이지 동작을 제어하는 데 사용되는 클라이언트용 스크립트 언어
#### 쉘스크립트: 쉘에서 사용되는 명령어들의 조합으로 구성된 스크립트 언어
---
### Python 활용
**print(..., end=...)**</code></pre><p>print(&quot;Hello&quot;, end=&quot; &quot;)
print(&quot;World&quot;)</p>
<pre><code>**print(..., ..., sep=...)**</code></pre><p>print(&quot;Python&quot;, &quot;Java&quot;, &quot;C&quot;, sep=&quot;, &quot;)
Python, Java, C</p>
<pre><code>**input(...).split(...)**</code></pre><p>data = input(&quot;이름과 나이를 입력하세요: &quot;).split()</p>
<h1 id="입력-kim-23">입력: Kim 23</h1>
<p>print(data)
[&#39;Kim&#39;, &#39;23&#39;]</p>
<pre><code>
---
### 아스키코드
**대문자 A-Z : 65~90
소문자 a-z : 97~122**
![](https://velog.velcdn.com/images/jimin_03/post/0c9f50b2-eab5-487b-9f54-fd4463f997b2/image.png)

--- 
### 기타 표준 입출력 함수
#### 입력
getchar() : 키보드로 한 문자를 입력받아 변수에 저장하는 함수
gets() : 키보드로 문자열을 입력받아 변수에 저장, enter를 누르기 전까지 하나의 문자열로 저장

#### 출력
putchar() : 인수로 주어진 한 문자를 화면에 출력하는 함수
puts() : 인수로 주어진 문자열을 화면에 출력한 후, 커서를 자동으로 다음 줄 앞으로 이동

---

![](https://velog.velcdn.com/images/jimin_03/post/5793f1b0-c0f4-4ab9-89f8-3ec04efb9709/image.png)
#### JAVA 형변환
![](https://velog.velcdn.com/images/jimin_03/post/3f16fe42-5d69-4313-9425-9583c0465e6b/image.png)

---

### JAVA 제네릭
 제네릭(Generic)은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미

 #### 클래스 및 인터페이스 제네릭 타입 선언</code></pre><p>public class ClassName <T> { ... }
public interface InterfaceName <T> { ... }</p>
<pre><code></code></pre><p>public class Main {
    public static void main(String[] args) {
        ClassName<Student> a = new ClassName<Student>();
    }
}</p>
<pre><code>
#### 제네릭 메서드 사용방법</code></pre><p>class ClassName<E> {</p>
<pre><code>private E element;    // 제네릭 타입 변수

void set(E element) {    // 제네릭 파라미터 메소드
    this.element = element;
}

E get() {    // 제네릭 타입 반환 메소드
    return element;
}

&lt;T&gt; T genericMethod(T o) {    // 제네릭 메소드
    return o;
}</code></pre><p>}</p>
<p>class Main {
    public static void main(String[] args) {</p>
<pre><code>    ClassName&lt;String&gt; a = new ClassName&lt;String&gt;();
    ClassName&lt;Integer&gt; b = new ClassName&lt;Integer&gt;();

    a.set(&quot;10&quot;);
    b.set(10);

    System.out.println(&quot;a data : &quot; + a.get());
    // 반환된 변수의 타입 출력 
    System.out.println(&quot;a E Type : &quot; + a.get().getClass().getName());

    System.out.println();
    System.out.println(&quot;b data : &quot; + b.get());
    // 반환된 변수의 타입 출력 
    System.out.println(&quot;b E Type : &quot; + b.get().getClass().getName());


    // 제네릭 메소드 Integer
    System.out.println(&quot;&lt;T&gt; returnType : &quot; + a.genericMethod(3).getClass().getName());

    // 제네릭 메소드 String
    System.out.println(&quot;&lt;T&gt; returnType : &quot; + a.genericMethod(&quot;ABCD&quot;).getClass().getName());

    // 제네릭 메소드 ClassName b
    System.out.println(&quot;&lt;T&gt; returnType : &quot; + a.genericMethod(b).getClass().getName());
}</code></pre><p>}
```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보처리기사 정리]]></title>
            <link>https://velog.io/@jimin_03/%EC%A0%95%EC%B2%98%EA%B8%B0-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@jimin_03/%EC%A0%95%EC%B2%98%EA%B8%B0-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 14 Apr 2025 02:56:09 GMT</pubDate>
            <description><![CDATA[<h2 id="화이트-박스-테스트-기법">화이트 박스 테스트 기법</h2>
<h3 id="기초-경로-검사">기초 경로 검사</h3>
<p>(Base Path Testing)    - 대표적인 화이트박스 테스트 기법이다.</p>
<ul>
<li>테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법, 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용된다.<h3 id="제어-구조-검사">제어 구조 검사</h3>
(Control Structure Testing)    - 조건 검사(Condition Testing): 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법</li>
<li>루프 검사(Loop Testing): 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법</li>
<li>데이터 흐름 검사(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법</li>
</ul>
<h4 id="테스트커버리지★-시스템-및-소프트웨어에-대해-충분히-테스트가-되었는지를-나타내는-정도">테스트커버리지★ 시스템 및 소프트웨어에 대해 충분히 테스트가 되었는지를 나타내는 정도</h4>
<p><strong>구문 커버리지(statement Coverage)</strong> : 모든 명령문을 적어도 한 번 수행
<strong>결정 커버리지(Decision Coverage)</strong> : 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
<strong>조건 커버리지(Condition Coverage)</strong> : 결정 포인트 내의 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
<strong>조건/결정 커버리지(Codition/Decision Coverage)</strong> : 전체 조건식뿐만 아니라 개별 조건식도 참과 거짓의 결과를 수행
<strong>변경 조건/결정 커버리지(MCDC)</strong> : 개별 조건식이 다른 개별 조건식에 영향을 받지않고 전체 조건식에 독립적으로 영향을 주도록 향상시킨 커버리지
<strong>다중 조건 커버리지(Multiple Condition Coverage)</strong> : 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지</p>
<h2 id="블랙박스-테스트-기법">블랙박스 테스트 기법</h2>
<h3 id="동등분할기법-equivalence-partitioning">동등분할기법 (Equivalence Partitioning)</h3>
<p>입력 데이터의 영역을 유사한 도메인별로 그룹핑하여 대푯값 테스트 케이스 도출
입력 데이터에 따른 결과값을 테스트할 때 사용되는 기법으로 입출력 데이터에 따라 다르게 동작하는 기능을 테스트하는 경우에 사용된다. 
소프트웨어에서 요구하는 입력 데이터를 그룹화하여 해당 그룹에 속하는 값으로 결과값을 비교한다. </p>
<pre><code>Feature: 성적 관리 기능
Scenario: 점수에 따른 학점을 계산한다. 
When: 90점을 입력한다.
then: A학점이 나온다.</code></pre><h3 id="경계값-분석-테스트boundary-value-analy">경계값 분석 테스트(Boundary Value Analy)</h3>
<p>등가 분할 후 경곗값 분석에서 오류 발생확률이 높기 때문에 경곗값을 포함하여 테스트 케이스 도출
경계가 뚜렷한 입력 데이터에 따른 동작을 검사할 때 사용되는 기법으로 입력 조건의 경계에 해당하는 값들에서 에러가 발생할 확률이 높다는 점을 이용하여 검사를 진행한다.</p>
<pre><code>Feature: 오전/오후 도출 기능
Scenario: 시간에 따른 오전/오후를 구한다.
When: 1시를 입력한다.
then: 오후라는 결과가 나온다.</code></pre><h3 id="원인---효과-그래프cause-effect-graph">원인 - 효과 그래프(Cause Effect Graph)</h3>
<p>원인-결과 그래프를 통해 요구사항 명세를 입력및 출력 조건 간의 논리적 관계로 표현하고 이를 기반으로 테스트 케이스를 만들어낸다. 
여러 원인들을 논리적으로 IDENTITY, AND, OR, NOT연산으로 연관지어 결과를 도출할 수 있고, 뿐만아니라 E(exclusive), I(inclusive), O(one and only one), R(requires) 제약 심볼을 적용할 수 있다. </p>
<p>입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법이다.
<img src="https://velog.velcdn.com/images/jimin_03/post/ac44974d-6570-4235-b8ab-9c9c9d36dce2/image.png" alt=""></p>
<hr>
<p>비교 테스트 : 여러 버전의 프로그램에 입력값을 넣어서 동일한 결과가 나오는지 비교해 보는 테스트 기법
오류예측기법 : 경험이 있는 전문가의 예측</p>
<h3 id="페이지-교체-알고리즘">페이지 교체 알고리즘</h3>
<p>OPT(OPTimal replacement, 최적 교체</p>
<ul>
<li><p>앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법</p>
</li>
<li><p>페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘</p>
</li>
</ul>
<p>FIFO(First in first out)</p>
<ul>
<li><p>각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지 교체</p>
</li>
<li><p>이해하기 쉽고, 프로그래밍 및 설계 간단</p>
</li>
</ul>
<p>LRU(Least Recently Used)</p>
<ul>
<li><p>최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법</p>
</li>
<li><p>각 페이지마다 계수기나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래 전에 사용된 페이지를 교체</p>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/ad7f61ba-0001-42f7-95a1-ec886e4ab249/image.png" alt=""></p>
</li>
</ul>
<p>LFU(Least Frequently Used)</p>
<ul>
<li><p>사용빈도가 가장 적은 페이지를 교체</p>
</li>
<li><p>활발하게 사용되는 페이지는 사용 회수가 많아 교체되지 않음
<img src="https://velog.velcdn.com/images/jimin_03/post/edd5d8ac-82f3-461e-8425-765aa887cde9/image.png" alt=""></p>
</li>
</ul>
<p>NUR(Not Used Recently)</p>
<ul>
<li><p>최근에 사용하지 않은 페이지를 교체</p>
</li>
<li><p>최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로 , LFU에서 나타나는 시간적인 오버헤드를 줄일 수 있음</p>
</li>
</ul>
<h2 id="프로세스-스케줄링-알고리즘">프로세스 스케줄링 알고리즘</h2>
<h3 id="반환시간--대기시간--실행시간">반환시간 = 대기시간 + 실행시간</h3>
<h3 id="대기시간--이전-프로세스들의-실행시간---자신의-도착시간">대기시간 = 이전 프로세스들의 실행시간 - 자신의 도착시간</h3>
<p>5개의 작업에 대한 도착시간과 CPU 사이클 시간이 아래표와 같다고 하고 다음 물음에 답하시오.
<img src="https://velog.velcdn.com/images/jimin_03/post/54523c69-2755-478a-9e25-f02ca40b6c85/image.png" alt="">
SJF 평균대기시간:
SJF 평균반환시간:
SRT 평균대기시간:
SRT 평균반환시간:</p>
<h2 id="인터페이스-구현">인터페이스 구현</h2>
<h3 id="rest-representational-state-transfer">REST (Representational State Transfer)</h3>
<ul>
<li><p>웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재 및 상태 정보를 표준화된 HTTP 메서드로 주고 받는 웹 아키텍쳐</p>
</li>
<li><p>JSON 문서를 이용</p>
<h3 id="ajax-asynchronous-javcascript-and-xml">AJAX (Asynchronous Javcascript And XML)</h3>
</li>
<li><p>자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술</p>
</li>
<li><p>브라우저 내의 XML Http Request 객체를 이용하여 전체 페이지 로드 없이 일부 페이지의 데이터만 로드</p>
<h3 id="xml-extensible-markup-language">XML (Extensible Markup Language)</h3>
</li>
<li><p>HTML의 단점을 보완하고 SGML의 복잡성을 개선한 마크업 언어</p>
</li>
<li><p>인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어</p>
<h3 id="json-javascript-object-notation">JSON (Javascript Object Notation)</h3>
</li>
<li><p>속성-값 또는 키-값으로 이루어진 데이터 객체를 전달하기 위해 텍스트로 작성하는 개방형 표준 포맷</p>
</li>
<li><p>AJAX에서 많이 사용되는 방식</p>
</li>
<li><p>XML을 대체하는 주요 데이터 포맷</p>
</li>
</ul>
<h3 id="dbms">DBMS</h3>
<p>공유데이터: 데이터베이스는 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있어야 하는 공용 데이터
저장데이터: 데이터베이스의 데이터는 주로 컴퓨터가 처리하므로, 컴퓨터가 접근할 수 있는 매체에 데이터베이스를 저장
통합데이터: 데이터 베이스는 데이터 중복성, 즉 똑같은 데이터가 여러 개 존재 하는 것을 허용하지 않는다
운용데이터: 일시적으로 사용하고 마는 것이 아닌, 지속적으로 유지해야 하는 데이터</p>
<h2 id="데이터베이스-모델링-종류">데이터베이스 모델링 종류</h2>
<p><strong>개논물</strong></p>
<h3 id="개념적-데이터-모델링">개념적 데이터 모델링</h3>
<p>추상화 수준 높음
업무중심적이고 포괄적인 수준의 모델링 진행
전사적 데이터 모델링
EA 수립시 많이 이용</p>
<h3 id="논리적-데이터-모델링">논리적 데이터 모델링</h3>
<p>시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현
재사용성 높음</p>
<h3 id="물리적-데이터-모델링">물리적 데이터 모델링</h3>
<p>실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계</p>
<h2 id="데이터베이스-스키마-구조-3단계">데이터베이스 스키마 구조 3단계</h2>
<p><strong>외개내</strong></p>
<h3 id="외부-스키마--개개인-사용자가-보는-개인적-db-스키마">외부 스키마 : 개개인 사용자가 보는 개인적 DB 스키마</h3>
<p>외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것</p>
<h3 id="개념-스키마--모든-사용자-관점을-통합한-전체-db">개념 스키마 : 모든 사용자 관점을 통합한 전체 DB</h3>
<p>조직의 모든 응용시스템에서 필요로 하는 개체 관계, 그리고 제약조건들을 포함하고 있게 됩니다.DB를 효율적으로 관리하는데 필요한 접근권한, 보안정책, 무결성 규칙등에 관한 사항들도 추가적으로 포함</p>
<ul>
<li>데이터 베이스의 전체적인 논리적 구조</li>
<li>데이터 베이스에 실제로 어떤 데이터가 저장되었으며 데이터간의 관계는 어떻게 되는가</li>
<li>모든 응용프로그램이나 사용자들이 필요로하는 데이터를 종합한 조직전체의 데이터베이스</li>
<li>개체간의 관계와 제약조건 명시</li>
<li>데이터 베이스의 접근 권한 보안 및 무결성 규칙에 관한 명세를 정의</li>
<li>단순한 스키마라고 하면 개념스키마를 의미- 기관이나 조직체의 관점에서 데이터베이스를 정의</li>
<li>데이터베이스 관리자 (DBA)에 의해 구성 * 데이터 베이스당 하나만 존재</li>
</ul>
<h3 id="내부-스키마--물리적-장치에서-데이터가-실제적-저장">내부 스키마 : 물리적 장치에서 데이터가 실제적 저장</h3>
<p>물리적인 저장장치 입장에서 DB가 저장되는 방법을 기술한 것구체적으로 개념 스키마를 디스크 기억장치에 물리적으로 구현하기 위한 방법을 기술한 것으로서 주된 내용은 실제로 저장될 내부레코드 형식, 내부레코드의 물리적 순서, 인덱스의 유/무 등에 관한 것입니다.</p>
<h3 id="⭐-데이터-독립성">⭐ 데이터 독립성</h3>
<p>논리적 독립성 : 개념스키마가 변경되어도 외부스키마에 영향 X
물리적 독립성 : 내부스키마가 변경되어도 외부/개념스키마에 영향 X</p>
<p>✅ Mapping(사상) : 상호 독립적인 개념을 연결시켜주는 다리
논리적 사상 : 외부 스키마 ~ 개념 스키마
물리적 사상 : 개념 스키마 ~ 내부 스키마</p>
<h3 id="⭐-데이터-모델링의-3요소">⭐ 데이터 모델링의 3요소</h3>
<p>어떤 것(Things)
성격(Attributes)
관계(Relationships)</p>
<h4 id="세타조인">세타조인</h4>
<p>조인에 참여하는 두 릴레이션의 속성값을 비교하여 조건을 만족하는 튜플만 반환하는 조인이다.</p>
<h4 id="크로스조인">크로스조인</h4>
<p>조건 없이 두 테이프를 조합</p>
<h4 id="동등조인">동등조인</h4>
<p>세타조인에서 = 연산자를 사용한 조인으로 일반적으로 조인이라고 하면 동등조인을 의미한다.</p>
<h4 id="자연조인">자연조인</h4>
<p>동등조인의 결과 릴레이션에서 중복된 속성을 제거하여 수행하는 연산. 즉 동등조인에서 중복속성 중 하나가 제거된 것이다. 자연조인의 핵심은 두 릴레이션의 공통된 속성을 매개로 하여 두 릴레이션의 정보를 관계로 묶어내는 것이다.</p>
<h3 id="관계대수">관계대수</h3>
<p>관계형 데이터베이스 내에서 원하는 정보를 어떻게 찾아낼 수 있는가를 기술하는 절차적인 언어이다.</p>
<h3 id="관계해석">관계해석</h3>
<p>관계데이터의 연산을 표현하는 방법으로, 관계데이터모델의 제안자인 코드가 수학을 술어 해석에 기반을 두고 관계데이터베이스를 위해 제안했다.</p>
<h3 id="정규화-순서">정규화 순서</h3>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/59fc2a38-7cb3-4208-a02f-7fa1f97b3aee/image.png" alt="">
제 1 정규화 : 테이블 한칸에 그렇게 큰 건 안들어가아아앗
제 2 정규화 : 따까리를 데리고 나타나다니... 네 녀석은 사나이<strong>(composite primary key)</strong>자격이 없다
제 3 정규화 : 알빠노들은 알빠노 테이블로 이동</p>
<h2 id="회선교환방식">회선교환방식</h2>
<p>회선 교환 circuit switching 방식은 먼저 메시지 전송로인 회선 circuit을 설정하고 이를 통해 메시지를 주고받는 방식입니다. ‘회선을 설정한다’라는 말은 ‘두 호스트가 연결되었다’, ‘전송로를 확보하였다’라는 말과도 같습니다. 회선 교환 네트워크에서는 호스트들이 메시지를 주고받기 전에 두 호스트를 연결한후, 연결된 경로로 메시지를 주고받습니다.</p>
<p>예를 들어서 다음 그림과 같은 회선 교환 네트워크에서 A와 B가 통신하려고 한다면, 메시지를 주고 받기 전에 A와 B 사이를 연결하는 회선(붉은 선)을 설정해야 이 경로를 통해 메시지를 주고받을 수 있습니다.
-&gt; 많은 데이터를 오랜 시간 전송하는 경우에 적합함</p>
<h2 id="패킷교환방식">패킷교환방식</h2>
<ul>
<li>패킷교환이란 일정한 데이터 블록인 패킷을 교환기가 수신측 주소에 따라 적당한 통신경로를 선택하여 전송하는 교환방식</li>
<li>전송하고자 하는 정보를 일정한 크기의 데이터로 분할한 후, 송수신 주소인 헤더를 각각에 부가한 패킷단위로 전송하는 방식
패킷 교환 packet switching 방식은 회선 교환 방식의 문제점을 해결한 방식으로, 메시지를 패킷이라는 작은 단위로 쪼개어 전송합니다. 여기서 패킷 packet은 패킷 교환 네트워크상에서 송수신되는 메시지의 단위입니다. 현대 인터넷은 대부분 패킷 교환 방식을 이용합니다.</li>
</ul>
<p>예를 들어서 우리가 패킷 교환 방식으로 2GB 크기의 영화 파일을 다운로드한다면, 2GB 크기의 영화 파일이 한 번에 컴퓨터로 전송될까요? 아닙니다. 패킷의 크기만큼 분할되어 전송됩니다. 그리고 이렇게 쪼개진 패킷들은 수신지인 컴퓨터에 도달한 뒤 재조립됩니다.
사전에 설정된 경로만으로 통신하는 회선 교환 방식과는 달리, 패킷 교환 방식은 정해진 경로만으로 메시지를 송수신하지 않습니다.</p>
<p>이 과정에서 메시지는 다양한 중간 노드를 거칠 수 있는데, 이때 중간 노드인 패킷 스위치는 패킷이 수신지까지 올바르게 도달할 수 있도록 최적의 경로를 결정하거나 패킷의 송수신지를 식별합니다. 대표적인 패킷 스위치 네트워크 장비로는 라우터 router와 스위치 switch가 있습니다.
-&gt;짧은 실시간 전송에 적합함</p>
<p><strong>경로설정</strong>: 발신자와 목적지가 직접 연결되지 않으므로 각 패킷을 네트워크를 통해서 노드에서 노드로 보내는 기능</p>
<p><strong>트레픽제어</strong>: 네트워크에 전송되어지는 트래픽의 양을 효율적이고 안정하게 하기 위해서 통제하는 기능</p>
<p><strong>에러제어</strong>: 네트워크에서 유실되는 패킷에 대해 제어하는 기능</p>
<h3 id="가상회선-패킷교환-tcp">가상회선 패킷교환 (TCP)</h3>
<p>데이터를 전송하기 전 논리적 연결 설정 연결 지향형</p>
<h3 id="데이터그램-패킷교환-udp">데이터그램 패킷교환 (UDP)</h3>
<p>데이터를 전송하기 전에는 논리적 연결이 설정되지 않으며 패킷이 독립적으로 전송됨 비연결 지향형</p>
<h2 id="메시지-교환방식">메시지 교환방식</h2>
<p>송신된 메시지를 중앙에서 축적하여 처리하는 방법으로 흔히 축적교환방식이라고 한다. 메시지를 메모리에 저장하고 여러 수신자에게 데이터를 전송할 수 있다.</p>
<h2 id="rip-경로-문제-거리벡터-알고리즘">RIP 경로 문제 (거리벡터 알고리즘)</h2>
<p>Routing Information Protocol 의 약자로, 거리벡터 알고리즘을 기반으로 개발된 동적 라우팅 알고리즘이다.
인접한 라우터의 라우팅 테이블 정보를 수집해 저장하고, 수집한 정보에서 Hop Count 가 가장 작은 경로로 라우팅을 하게된다.
IGP 로 많이 이용되는 프로토콜.</p>
<h4 id="rip-특징">RIP 특징</h4>
<p>중간에 거치는 홉(hop) Count 를 기준으로 Hop Count가 가장 작은 최적의 경로를 찾는다.
최대 Hop Count는 15이다. 
자신의 라우팅 테이블을 30초 주기로 전파한다.
패킷이 목적지로 가는 동안 거치는 라우터 수가 최소가 되도록 경로를 선택</p>
<h2 id="ospf-경로-문제-링크상태알고리즘">OSPF 경로 문제 (링크상태알고리즘)</h2>
<p>링크 상태 정보를 모든 라우터에게 전달해 최단 경로 트리를 구성하는 라우팅 프로토콜 알고리즘
Network에 대한 전반적인 정보(Topology, path)를 가지고 라우터와 라우터 간 가능성 있는 모든 경로 정보를 교환
거리와 대역폭에 따라 경로를 계산하고 어떤 링크의 변화가 있는 경우만 정보를 전달하는 방식</p>
<hr>
<h2 id="흐름-제어flow-control와-혼잡-제어congestion-control">흐름 제어(Flow Control)와 혼잡 제어(Congestion Control)</h2>
<h3 id="흐름-제어">흐름 제어</h3>
<p>흐름 제어는 데이터 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절해 수신자의 버퍼 오버플로우를 방지하는 것이다.</p>
<h4 id="stop-and-wait-정지와-대기">Stop and wait 정지와 대기</h4>
<p>매번 전송한 패킷에 대한 확인 응답을 받아야만 그 다음 패킷을 전송하는 기법
<img src="https://velog.velcdn.com/images/jimin_03/post/def287eb-3a2f-4782-a082-8908e8e42459/image.png" alt=""></p>
<h4 id="sliding-windowgo-back-n-arq">Sliding Window(Go-Back-n ARQ)</h4>
<p>수신측에서 설정한 윈도우 크기만큼 송신측에서 패킷 각각에 대한 확인 응답없이 세그먼트를 전송하게 하고, 데이터 흐름을 동적으로 조절하는 기법
전송은 되었으나, ACK 을 받지 못한 Byte 크기를 파악하기 위해 사용</p>
<p>윈도우 크기만큼 패킷을 모두 전송하고, 그 패킷들의 전달이 확인되는대로 해당 윈도우를 옆으로 슬라이딩하면서 그 다음 패킷을 전송하는 방식으로 동작</p>
<h3 id="혼잡-제어">혼잡 제어</h3>
<p>혼잡 제어는 네트워크 내의 패킷 수가 넘치지 않도록 방지하는 것이다. 만약 패킷이 많아지면 혼잡 붕괴 현상이 일어날 수도 있기 때문이다.</p>
<hr>
<h3 id="프로세스-상태전이">프로세스 상태전이</h3>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/aa475d7b-1d19-4d00-8d1a-bfdfb89f4db8/image.png" alt=""></p>
<p>준비와 실행사이에선 문맥교환이 일어남 
순서 및 디스패치와 WAKE UP 외워두기 </p>
<hr>
<p>(테일러링) 소프트웨어 개발 방법론의 절차, 사용기법을 수정 및 보완
(SOAP) HTTPS/SMTP와 XML을 교환하기 위한 통신규약
(WSDL) UDDI의 기초이며, SOAP와 XML 스키마와 결합하여 인터넷에 웹서비스를 제공하기 위해 사용됨
(표의 숫자코드): 코드화 대상항목의 물리적 수치를 그대로 코드에 적용
(중재자 패턴): 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
(프록시 패턴): 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하며 객체 캡슐화
(IPsec): IP 패킷 단위 데이터변조 방지 및 은닉 기능 제공하는 프로토콜
(xUnit): 단위테스트 프레임워크
(STAF): 서비스 호출 및 컴포넌트 재사용 테스트 프레임워크
(FitNesse): 웹 기반 테스트 케이스 설계 및 실행을 지원
(NTAF) FitNesse와 STAF를 통합
(watir) 인터프리터 방식의 객체지향 스크립트 언어인 Ruby를 사용하는 애플리케이션 테스트 프레임워크
(SEED) 한국정보보호진흥원의 기술진이 개발한 대칭키 암호 알고리즘
(ISMS) 국내 정보보호관리 체계
(CC인증) 나라별 인증체계가 다른데 이를 연동시켜줌
(AAA) 사용자의 컴퓨터 자원 접근에 대한 처리 및 서비스 제공, 인증, 인가, 과금
(TearDrop) offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부화 발생시킴
(NAC) MAC주소 IP관리시스템에 등록한 후 보안 솔루션
(SIEM) 로그 및 보안이벤트 통합
(백도어) 개발자가 몰래 만든 보안 없는 후문으로 들어가는 거
(DDE) 마이크로소프트 오피스와 애플리케이션 사이의 프로토콜
(멀버타이징) 멀웨어 없이 깨긋한 환경에서도 광고에 의해 악성코드가 유포됨
(바이러스) 자가복제 기능없음. 숙주가 필요함. 주로 파일에서 섞임
(웜) 자가복제 기능 있음. 호스트 파일 필요 없
(크리덴셜 스터핑) 로그인 자격증명을 다른계정에 무작위 대입
(스니핑) 몰래 훔쳐보는거;;
(매시업) 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어, 서비스, 디비를 만듬
(SOA) 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처
(디지털트윈) 현실 속 사물을 소프트웨어로 가상화
(시맨틱 웹) 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어냄
(앤스크린) TV, PC 등 다양한 기기에서 하나의 콘텐츠 계속 시청 ㅇㅇ
(신 클라이언트 PC) 단말기 PC인데 최소한으로 갖춘 PC
(엠디스크) 걍 수명 ㅈㄴ 긴 저장장치
(멤리스터) 전자신호의 값에 따라 저항이 변하는 전자소자
(멤스) 미세전자기시스템
(트러스트존 기술) 하드웨어 기반의 보안기술
(하둡) 오픈소스를 기반으로 한 분산 컴퓨팅 플랫폼
(맵리듀스) 대용량 데이터 분산처리 목적으로 개발된 프로그래밍 모델
(데이터 마이닝) 걍 빅데이터에서 필요한 데이터 추출
(타조) 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트
(OLAP) 다차원으로 이루어진 데이터로부터 통계적인 요약정보를 분석하여 의사결정에 활용하는 방식이다
(브로드 데이터) 새로운 데이터나 기존 데이터에 새로운 가치가 더해진 데이터. 걍 다크데이터의 반대라고 생각하자.</p>
<hr>
<h4 id="트랜잭션-상태">트랜잭션 상태</h4>
<p><img src="https://velog.velcdn.com/images/jimin_03/post/944a7f61-a502-4cc9-b34c-59b862596908/image.png" alt=""></p>
<hr>
<h4 id="형상관리-기능">형상관리 기능</h4>
<ul>
<li>형상식별: 형상관리 대상에 이름과 관리 번호를 부여하고 계층구조로 구분하여 수정 및 추적이 용이하도록 하는 작업</li>
<li>버전제어: 소프트웨어 업그레이드나 유지보수 과정에서 생성된 다른 버전의 형상 항목관리</li>
<li>형상통제: 변경 요구를 검토하여 현재 기준선이 반영되도록 함</li>
<li>형상감사: 기준선의 무결성을 평가하기 위함 </li>
<li>형상기록: 형상의 식별, 통제, 감사작업의 결과 기록</li>
</ul>
<p>(리포지토리) 최신 버전의 파일들과 변경 배역에 대한 정보 저장
(가져오기) 아무것도 없는 저장소에 처음으로 파일 복사
(체크아웃) 프로그램 수정을 위해 저장소에서 파일 받아옴
(체크인) 파일 수정을 완료 후 저장소 파일 새로운버전으로 갱신
(커밋) 체크인 수행할 때 이전에 갱신된 내용이 있는 경우 충돌
(동기화) 저장소에 있는 최신 버전으로 자신의 저장공간 동기화</p>
<p>GIT, SVN, CVS</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[github 깃허브 초기설정]]></title>
            <link>https://velog.io/@jimin_03/GITHUB</link>
            <guid>https://velog.io/@jimin_03/GITHUB</guid>
            <pubDate>Thu, 27 Jun 2024 06:33:01 GMT</pubDate>
            <description><![CDATA[<h2 id="초기설정">초기설정</h2>
<pre><code class="language-jsx">$ git config --global user.name &quot;본인 이름&quot;
$ git config --global user.email &quot;본인 이메일&quot;</code></pre>
<pre><code class="language-jsx">$ git init</code></pre>
<pre><code class="language-jsx">$ git remote add origin https://github.com/유저이름/레포지토리명</code></pre>
<h2 id="클론-땡기는-법">클론 땡기는 법</h2>
<pre><code>$ git clone https://github.com/유저이름/레포지토리명.git</code></pre><h2 id="복사하기--붙여넣기">복사하기 / 붙여넣기</h2>
<p><strong>복사 시에는 Ctrl + Ins</strong>
<strong>붙여넣기 시에는 Shift + Ins</strong></p>
<pre><code class="language-jsx">git add .
git commit &quot;커밋 메시지&quot;
git push origin master</code></pre>
<h2 id="강제병합">강제병합</h2>
<pre><code class="language-html">git checkout master
git branch main master -f 해당 브랜치를 강제로(-f) master 브랜치의 현재 상태로 리셋
git checkout main
git push origin main -f 원격 저장소에 main 브랜치를 강제로(-f) 푸시</code></pre>
<h2 id="readme-작성법">README 작성법</h2>
<p>MP4 동영상 파일을 gif 파일로 변경해야 함</p>
<p>issues로 들어가서 동영상 파일 올리면 링크로 변환</p>
<pre><code class="language-jsx">&lt;img src=&quot;이미지 링크&quot; width=&quot;너비 &quot; height=&quot;높이&quot;&gt;

&lt;img src=&quot;https://github.com/깃허브 이름/레포지토리명/assets/147581729/bea03d57-a9d1-4c54-a073-879e3bfd0942&quot;&gt;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[Springboot 초기설정]]></title>
            <link>https://velog.io/@jimin_03/Springboot-%EC%B4%88%EA%B8%B0%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@jimin_03/Springboot-%EC%B4%88%EA%B8%B0%EC%84%A4%EC%A0%95</guid>
            <pubDate>Thu, 01 Feb 2024 13:23:09 GMT</pubDate>
            <description><![CDATA[<h2 id="buildgraddle">build.graddle</h2>
<pre><code>implementation &#39;org.springframework.boot:spring-boot-starter-web&#39;
testImplementation &#39;org.springframework.boot:spring-boot-starter-test&#39;
developmentOnly &#39;org.springframework.boot:spring-boot-devtools&#39;
</code></pre><h3 id="lombok-프레임워크-설치">lombok 프레임워크 설치</h3>
<h4 id="buildgraddle-1">build.graddle</h4>
<pre><code>compileOnly &#39;org.projectlombok:lombok&#39;
annotationProcessor &#39;org.projectlombok:lombok&#39;
</code></pre><h3 id="마리아db-설치">마리아DB 설치</h3>
<h4 id="buildgraddle-2">build.graddle</h4>
<pre><code>implementation &#39;org.mariadb.jdbc:mariadb-java-client:2.7.4&#39;
implementation &#39;org.springframework.boot:spring-boot-starter-data-jpa&#39;
</code></pre><h3 id="마리아db-연동">마리아DB 연동</h3>
<h4 id="applicationproperties">application.properties</h4>
<pre><code>#DATABASE
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/MusicCharts 
&lt;- 3306번 포트의 MusicCharts 데이터베이스 연동
spring.datasource.username=root &lt;-사용자명
spring.datasource.password=★★★★★ &lt;- DB 비밀번호

#JPA
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false 
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.show-sql=true</code></pre><h3 id="템플릿-설치-html">템플릿 설치 (HTML)</h3>
<h4 id="buildgraddle-3">build.graddle</h4>
<pre><code>implementation &#39;org.springframework.boot:spring-boot-starter-thymeleaf&#39;
implementation &#39;nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect&#39;</code></pre><p>템플릿 파일은 리소스 폴더 내부에 Templates 패키지 안에 .html 파일로 생성하면 된다. 다른 css나 js는 static 폴더에서 생성하며, 따로 html과 연결해주어야 한다.</p>
<pre><code>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; th:href=&quot;@{/css/LR_styles.css}&quot;&gt;
&lt;script src=&quot;/JS/LR.js&quot;&gt;&lt;/script&gt;</code></pre><h3 id="웹소켓-설치">웹소켓 설치</h3>
<h4 id="buildgraddle-4">build.graddle</h4>
<pre><code>implementation &#39;org.springframework.boot:spring-boot-starter-websocket&#39;</code></pre><pre><code>&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.5.1/sockjs.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js&quot;&gt;&lt;/script&gt;</code></pre><p>이 코드는 웹 소켓(WebSocket)을 사용하는 라이브러리인 SockJS와 STOMP를 로드하는데 사용된다. 웹 소켓은 실시간 양방향 통신을 지원하는 프로토콜이며, SockJS와 STOMP는 웹 소켓을 브라우저에서 더 쉽게 사용할 수 있도록 도와주는 라이브러리이다.</p>
<h3 id="springsecurity-설치">springsecurity 설치</h3>
<h4 id="buildgraddle-5">build.graddle</h4>
<pre><code>implementation &#39;org.springframework.boot:spring-boot-starter-security&#39;
implementation &#39;org.thymeleaf.extras:thymeleaf-extras-springsecurity6&#39;
</code></pre>]]></description>
        </item>
    </channel>
</rss>