<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>console_log.log</title>
        <link>https://velog.io/</link>
        <description>개발새발자</description>
        <lastBuildDate>Thu, 15 Dec 2022 14:15:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>console_log.log</title>
            <url>https://velog.velcdn.com/images/console_log/profile/4111a924-abf0-4eb6-9d4f-6c536664f790/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. console_log.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/console_log" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[이제 고지가 보인다. 다들 잘 살아라.]]></title>
            <link>https://velog.io/@console_log/%EC%9D%B4%EC%A0%9C-%EA%B3%A0%EC%A7%80%EA%B0%80-%EB%B3%B4%EC%9D%B8%EB%8B%A4.-%EB%8B%A4%EB%93%A4-%EC%9E%98-%EC%82%B4%EC%95%84%EB%9D%BC</link>
            <guid>https://velog.io/@console_log/%EC%9D%B4%EC%A0%9C-%EA%B3%A0%EC%A7%80%EA%B0%80-%EB%B3%B4%EC%9D%B8%EB%8B%A4.-%EB%8B%A4%EB%93%A4-%EC%9E%98-%EC%82%B4%EC%95%84%EB%9D%BC</guid>
            <pubDate>Thu, 15 Dec 2022 14:15:53 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/console_log/post/a1e84ccf-137e-409d-a476-91ce45ccc896/image.jpeg" alt=""></p>
<p>지옥같던 시간이 끝나간다. 
이제 이들도 끝이구나 드디어 해방이다.. 
이제 돈 벌 궁리만 하면된다. 
다들 수고 정말 많으셨습니다. 
잘들 살아요</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[라이브러리 vs 프레임워크]]></title>
            <link>https://velog.io/@console_log/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-vs-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC</link>
            <guid>https://velog.io/@console_log/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-vs-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC</guid>
            <pubDate>Wed, 14 Dec 2022 12:45:46 GMT</pubDate>
            <description><![CDATA[<p>라이브러리란 도서관이다. 끝.. </p>
<h2 id="라이브러리">라이브러리</h2>
<p> 프로그래밍에서는 필요한 기능들이 모여있는 코드들의 집합을 의미함.
반복적인 코드 작성을 줄이고자 클래스나 함수, 코드 변수들로 만들어두어 필요할 떄마다 호출하여 사용 할 수 있다.</p>
<p><strong>라이브러리</strong>는 동작하는 프로그램이 아니라 특정한 기능만을 수행하도록 제작되어 기계어의 형태로 존재하는 프로그램이고 개발자가 필요한 기능만 호출해서 사용 할 수 있어 개발 주도권이 개발자에게 있다고 할 수 있다.
사용할지 안할지는 개발자의 선택사항이고 라이브러리를 만들 때는 규칙이 존재하지 않아서 의도에 맞게 사용하면 된다. 또 개발자가 만들어서 라이브러리를 제공할 수 있고 남이 만든 라이브러리를 가져다가 쓸 수도 있다.
해당 라이브러리 기능을 직접 호출하는 프로그램을 실행하거나 사용자가 해당 라이브러리의 기능을 실행하는 API를 사용하는 프로그램을 개발하면 실행 할 수 있다.</p>
<p>라이브러리의 종류는 언어에 따라 차이가 있다<img src="https://velog.velcdn.com/images/console_log/post/d05bbeea-b91a-41bd-be21-e8a70d97bf93/image.png" alt=""></p>
<h2 id="프레임워크">프레임워크</h2>
<p>프레임워크란 원하는 기능 구현에만 집중하여 빠르게 개발할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 라이브러리를 말한다. 프로그래밍을 할 때 필수적인 코드, 알고리즘 등과 같은 어느 정도의 구조를 제공해주고 있기 때문에 작업 속도를 크게 높이고 단순화 할 수 있다. </p>
<p>개발자에게 공통적인 개발 환경을 제공하며 개발 할 수 있는 범위들이 정해져 있다. 
개발을 시작하는 방법부터 기능을 구현하는 모든 것을 프레임워크에서 정해 놓은대로 따라야 한다. 
라이브러리와는 다르게 개발 주도권이 프레임워크한테 있다고 말할 수 있다. 혼자서는 동작할 수 없기 때문에 코드의 비어있는 영역을 채워야 한다. 만약에 기존 프레임 워크의 기능을 바꾸고싶다면 프레임워크를 고쳐서 사용하면 된다. </p>
<p>프로그래밍 언어별 프레임워크 <img src="https://velog.velcdn.com/images/console_log/post/6fa5d8d9-033a-490d-9de1-f7280537fbad/image.png" alt=""></p>
<h2 id="라이브러리와-프레임워크-비교">라이브러리와 프레임워크 비교</h2>
<p>개발 기능을 제공한다는 점에서 라이브러리와 프레임워크가 헷갈릴 수도 있는데 프레임워크가 여러 기능을 가진 클래스와 라이브러리가 어떠한 결과물을 구현하고자 합쳐진 형태로 라이브러리보다 상위의 그룹이라고 볼 수 있다. <img src="https://velog.velcdn.com/images/console_log/post/04033a0a-4c02-4aba-a37f-ebb28254ebef/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[typescript & javascript]]></title>
            <link>https://velog.io/@console_log/typescript-javascript</link>
            <guid>https://velog.io/@console_log/typescript-javascript</guid>
            <pubDate>Tue, 13 Dec 2022 14:09:53 GMT</pubDate>
            <description><![CDATA[<h1 id="javascript와-typescript">JavaScript와 TypeScript</h1>
<ul>
<li>TypeScript는 JavaScript 기반의 언어</li>
<li><strong>JavaScript</strong>는 클라이언트 측 스크립팅 언어 <strong>TypeScript</strong>는 객체 지향 컴파일 언어</li>
<li>객체 지향 프로그래밍 패러다임은 데이터 추상화에 중심</li>
<li>객체와 클래스라는 두 주요 개념을 기반으로 함</li>
</ul>
<h3 id="javascript">JavaScript</h3>
<p>웹 개발에 주로 사용됨
웹 페이지를 대화식으로 만드는 프로그래밍 언어
폼 유효성 검사, 애니메이션 적용 및 이벤트 생성을 수행
클라이언트 측 스크립팅 언어</p>
<ul>
<li>사용자가 웹 브라우저를 열고 웹 페이지를 요청하면 해당 요청이 웹 서버로 이동함
멀티 스레딩, 멀티 프로세싱 기능이 없음</li>
</ul>
<h3 id="typescript">TypeScript</h3>
<ul>
<li>JavaScript의 상위 집합으로 JavaScript의 모든 기능이 있음</li>
<li>TypeScript 컴파일러를 사용하여 ts(TypeScript)파일을 js(JavaScript) 파일로 변환, 쉽게 통합</li>
<li>정적 유형 검사 제공</li>
<li>클래스 기반 객체를 만들 수 있음</li>
<li>클래스 기반이므로 객체 지향 프로그래밍 언어로 상속, 캡슐화 및 생성자를 지원할 수 있음</li>
</ul>
<h3 id="기타">기타</h3>
<ul>
<li>타입은 소문자, 대문자 구별</li>
<li>타입 선언을 생략하면 동적으로 타입이 결정 =&gt; 타입 추론</li>
<li>타입 선언 생략 + 값 할당 x =&gt; any 타입</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[스웨거 태그 , 그리고 ppt 준비]]></title>
            <link>https://velog.io/@console_log/%EC%8A%A4%EC%9B%A8%EA%B1%B0-%ED%83%9C%EA%B7%B8-%EA%B7%B8%EB%A6%AC%EA%B3%A0-ppt-%EC%A4%80%EB%B9%84</link>
            <guid>https://velog.io/@console_log/%EC%8A%A4%EC%9B%A8%EA%B1%B0-%ED%83%9C%EA%B7%B8-%EA%B7%B8%EB%A6%AC%EA%B3%A0-ppt-%EC%A4%80%EB%B9%84</guid>
            <pubDate>Mon, 12 Dec 2022 14:29:17 GMT</pubDate>
            <description><![CDATA[<p>누구를 위한 ppt인가 </p>
<p>다 때려치고 싶은 그런 날임 </p>
<p>나는 그릇이 간장종지만한 사람</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[나 오늘 swagger 했어]]></title>
            <link>https://velog.io/@console_log/%EB%82%98-%EC%98%A4%EB%8A%98-swagger-%ED%96%88%EC%96%B4</link>
            <guid>https://velog.io/@console_log/%EB%82%98-%EC%98%A4%EB%8A%98-swagger-%ED%96%88%EC%96%B4</guid>
            <pubDate>Sun, 11 Dec 2022 14:22:53 GMT</pubDate>
            <description><![CDATA[<p>swagger는 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML 화면으로 확인할 수 있게 해주는 프로젝트이다. 
<img src="https://velog.velcdn.com/images/console_log/post/c9a83426-04f8-45e7-9c79-d26ead6a728a/image.png" alt=""></p>
<p>swagger가 적용될 경우 URL 리스트들의 목록을 바로확인 할 수 있다.
아.. 근데 진짜 오늘 저거 다 밑에 채워넣느라고 힘ㄷ르었는데.. 
그냥 오늘 나 이거 했다고 쓰는거시기 때문에.. 설명은 다음에 할래.. 나 힘들어쪄 오늘</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래밍 언어의 흐름 ]]></title>
            <link>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EC%9D%98-%ED%9D%90%EB%A6%84</link>
            <guid>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EC%9D%98-%ED%9D%90%EB%A6%84</guid>
            <pubDate>Sat, 10 Dec 2022 13:11:30 GMT</pubDate>
            <description><![CDATA[<p>프로그래밍 언어의 특징들을 살펴보면 모든 경우에 딱 맞아 떨어지는건 아니지만 프로그래밍 언어가 이런식으로 발전했다고 볼 수 있다.
<img src="https://velog.velcdn.com/images/console_log/post/b2cf2d3f-e8e6-4e1e-8649-cdf9afd64e96/image.png" alt="">
컴퓨터와 칩의 성능이 좋지않던 시기에는 &quot;자세한 언어&quot;들이 등장 했고,
그 다음에 협업과 생산성 향상에 좋은 객체 지향 프로그래밍이 대세로 떠오르면서 &quot;체계적인 언어&quot;가 인기를 얻었고, 누구나 프로그래밍을 배우고 할 수 있는 최근에 들어서서는 &quot;쉬운 언어&quot;가 인기를 끄는 것이 사실이다.</p>
<p>하지만, 이러한 분류들이 언어를 나누는 절대적인 기준이라고 볼 수는 없고, 필요에 따라서 언어들이 등장했다 정도로만 이해하면 될 것 같다.
왜냐면 C가 요즘도 활발히 쓰이고 있고, 코틀린 같은 &quot;체계적인 언어&quot;에 속하는 언어들도 비교적 최근에 등장했기 때문이다. </p>
<p>그럼 앞서 살펴본 c,java,python,ruby는 어떨까
특수 ㅁ고적으로만 사용되는 언어가 아닌 이상, 일반적인 목적의 언어들은 다 이 중 한 곳에 해당 된다. 
<img src="https://velog.velcdn.com/images/console_log/post/201b75e1-4e38-4710-9a0a-366020492755/image.png" alt=""></p>
<p>어쎔플리 언어, fotran, COBOL,Pascal,BASIC 등은 &quot;자세한 언어&#39;에 속하고, Go,Kotlin,Haskell,Swift등은 &quot;체계적인 언어&quot;,
javaScript,PHP,Perl,Objective-c등은 &quot;쉬운 언어&quot;에 해당한다고 볼 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[자세한 언어와 체계적인 언어,쉬운 언어]]></title>
            <link>https://velog.io/@console_log/%EC%9E%90%EC%84%B8%ED%95%9C-%EC%96%B8%EC%96%B4%EC%99%80-%EC%B2%B4%EA%B3%84%EC%A0%81%EC%9D%B8-%EC%96%B8%EC%96%B4%EC%89%AC%EC%9A%B4-%EC%96%B8%EC%96%B4</link>
            <guid>https://velog.io/@console_log/%EC%9E%90%EC%84%B8%ED%95%9C-%EC%96%B8%EC%96%B4%EC%99%80-%EC%B2%B4%EA%B3%84%EC%A0%81%EC%9D%B8-%EC%96%B8%EC%96%B4%EC%89%AC%EC%9A%B4-%EC%96%B8%EC%96%B4</guid>
            <pubDate>Fri, 09 Dec 2022 12:29:59 GMT</pubDate>
            <description><![CDATA[<p>자세한 언어로는 low-level에 가까운 어셈블리 언어나 c언어 등이 있다.
객체 지향 개념이 적용되지 않고, 코드를 작성할 때 자료형 등의 컴퓨터적 구조를 다 고려해줘야 하는 언어이다.</p>
<p>이 언어들은 사람보다 컴퓨터의 논리적인 사고방식에 맞추어져 있다는 특징이 있어서 사람들이 작성하기는 어렵지만, 컴퓨터가 실행하기는 좋다. 프로그램을 빠르고 효율적으로 만드는데 최적화 돼 있다. 그래서 스마트워치,tv,스피커,전광판,가전제품 등 컴퓨터가 메인이 아닌 기게에 자주 사용됩니다. 이런 기계들은 보통 이런 작은 칩에서 돌아간다. 그래서 저장 공간이나 성능이 컴퓨터보다 상당히 열악하다. 여기서 c 같은 &#39;자세한 언어&#39;가 핵심적으로 사용된다. </p>
<p>참고로 이런 곳에 들어가는 시스템을 임베디드 시스템이라고 부란다. IoT라고 해서 이런 임베디드 시스템을 연결해서 스마트홈을 만들거나 기계들 사이의 통신을 할 수 있게 하기도 한다. </p>
<p>임베디드 시스템 말고도 자세한 언어가 활약할 수 있는 분야가 있다. 
예를 들어 수 많은 문자를 거의 실시간으로 전송해야 하는 텔레그램 같은 채팅 앱이나 트위치 같은 동영상 스트리밍 서비스, 검색엔진,개발자들이 코드 관리를 위해 사용하는 github,머신러닝 같은 빅데이터 처리 속도와 알고리즘이 중요한 그런 분야의 회사에서 많이 사용된다.
사람이 코딩하는 시간은 길어지지만, 컴퓨터가 실행하는 시간은 조금이라도 빠르게 하고 싶은 그런 경우다. </p>
<ul>
<li>단점: 코드를 작성하거나 고치는 게 힘들고 오래 걸린다.</li>
<li>장점: 프로그램을 만들기만 하면 컴퓨터가 실행하는 속도는 매우 빠르다. 성능이 안 좋은 컴퓨터에 적용하기 좋다.</li>
</ul>
<p>쳬계적인 언어</p>
<p>자세한 언어와 마찬가지로 static typing 언어지만, 객체 지향 개념이 적용된 언어이다. java나 c++같은 언어들이 여기에 속하고, 체계가 잡혀있기 때문에 여러 사람이 함께 작업하기에 가장 적합하고 , 협업 과정에서 오류가 적어서 주로 큰 규모의 프로젝트에 적합하다.</p>
<p>규모가 큰 기업에들에서는 java를 많이 사용하고있는데 구글,에어비앤비,우버 뿐 아니라 이베이, 핀터레스트,스포티파이,트립 어드바이저,아마존,인텔,필립스, 회사 이름으로 나열하려면 끝도없다. 그래서 취업을 하려면 java를 해라 이런얘기도 있다.</p>
<ul>
<li>단점: &#39;자세한 언어&#39;보다 낫지만 여전히 문법이완전 쉽지는 않다. 코드를 작성하는 시간보다 체계적으로 설계하는데 시간이 오래 걸릴 수 있다.</li>
<li>장점: 짜임새와 혀벙빙 중요한, 규모가 큰 프로젝트에 적합하다. 객체 지향 개념이 적용돼서, &#39;자세한 언어&#39;보다 유지보수 하기가 편하다.</li>
</ul>
<p>쉬운언어 </p>
<p>객체 지향  개념이 적용된, dynamic typing 언어를 말하며, 프ㅗㄹ그래머가 아닌 사람도 비교적 쉽게 배우고 사용할 수있는 python,ruby등의 언어가 여기에 속한다. </p>
<p>이 언어들은 최대한 간결하고, 짧은 코드를 추구한다. 문법도 간편해서, 코드를 작성하는 시간이 가장 짧다. 귀찮은 건 다 컴퓨터에 맡겨버리는 거다 ㅋ</p>
<p>파이썬에는 이런말이 있다 &#39;life is short you need python&#39; 인생이 짧은 만큼 빨리빨리 개발할 수 있는 파이썬을 사용하라는 말이다. &#39;simple is better than complex&#39;이런말도 있는데 간결한 것이 복잡한 것보다 낫다는 뜻이다. 복잡하게 하지말고 간편하게 코딩하자. 이런 뜻이다.
ruby의 개발자 마츠모토 유키히로는 &#39;루비는 스트레스가 없는 쉬운 프로그래밍 언어이다. 프로그래밍 언어는 컴퓨터가 아닌 인간 중심으로 설계 되어야 한다.&#39; 라고 하기도 했다. </p>
<p>쉬운 언어는 빠르게 개발이 필요한, 변화가 많고 잦은 분야에서 많이 사용되고, 데이터 사이언스 , 업무 자동화와 같이 개인 규모의 프로젝트에서도 가장 많이 사용된다.</p>
<ul>
<li>장점: 진입 장벽이 낮다. 배우기 쉽다. 코드를 읽거나 수정하기가 가장 간편하다. 코드를 빨리 작성할 수 있다.</li>
<li>단점: 코드 작성 시간은 짧지만, 컴퓨터의 코드 실행 속도가 느리다. 성능 제약이 심한 곳에서 빠른 속도를 내야 하는 경우는 사용할 수 없다. 프로그래밍 코드 문법에 제약이 너무 없어서, 큰 규모의 프로젝트에서 실수를 방지하기가 어렵다. 많은 사람들의 협업에는 부적합할 수 있다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Dynamic typing과 Static typing의 장단점]]></title>
            <link>https://velog.io/@console_log/Dynamic-typing%EA%B3%BC-Static-typing%EC%9D%98-%EC%9E%A5%EB%8B%A8%EC%A0%90</link>
            <guid>https://velog.io/@console_log/Dynamic-typing%EA%B3%BC-Static-typing%EC%9D%98-%EC%9E%A5%EB%8B%A8%EC%A0%90</guid>
            <pubDate>Thu, 08 Dec 2022 14:32:27 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/console_log/post/499f53fc-c300-46d1-a910-5a79b14f7d85/image.png" alt=""></p>
<p><strong>Dynamic typing 언어</strong></p>
<p>Dynamic typing 언어는 간편함과 편리함을 추구하며, 컴퓨터적 구조를 생략하기 때문에 코드의 내용(로직)이 눈에 잘 들어오고 사람이 코드를 이해하기 편해서 학습하기 쉽다. 
다만 컴퓨터적 구조를 생략하기 때문에 실행 속도에 민감한 곳이나 성능이 좋지 않은 환경에서는 활약하기 힘들다.</p>
<p><strong>static typing 언어</strong></p>
<p>static typing 언어는 안정성과 정교함을 추구하며, 컴퓨터적 구조를 코드에 적어주기 때문에 코드의 구조가 눈에 잘 들어오지만 코드가 복잡해져 배우기가 어렵다.
다만 코드의 컴퓨터적 구조 덕분에 컴퓨터가 고민을 덜 하게 되고, 실행 속도가 중요한 곳에서 활약할 수 있다.
이런 특징을 살려 static typing 언어는 임베디드,실시간 투자, 인공 지능 분야에서 활약하고 있다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[express-rate-limit]]></title>
            <link>https://velog.io/@console_log/express-rate-limit</link>
            <guid>https://velog.io/@console_log/express-rate-limit</guid>
            <pubDate>Wed, 07 Dec 2022 13:41:21 GMT</pubDate>
            <description><![CDATA[<p>오늘 우리는 한 IP가 request 숫자를 제한하는 것을 만들어보자고 이야기가 나왔다.
DDoS 공격에 대비하자는 것이다.
짜는것은 생각보다 어렵지 않았다. 우선 모듈을 설치해주자.</p>
<pre><code>npm i express-rate-limit</code></pre><p>그 다음 전역으로 선언해주고 함수를 추가해버섯</p>
<pre><code>const RateLimit = require(&quot;express-rate-limit&quot;);

apiLimiter = new RateLimit({
  windowMs: 60 * 1000, // 1분 간격
  max: 3, // windowMs동안 최대 호출 횟수
  handler(req, res) {
    // 제한 초과 시 콜백 함수
    res.status(this.statusCode).json({
      code: this.statusCode, // statusCode 기본값은 429
      message: &quot;1분에 3번만 요청 할 수 있습니다.&quot;,
    });
  },
});

// 미들웨어 들어가는 경로
app.use(&quot;/&quot;, apiLimiter, [routes]);
</code></pre><p>자 그러면 한 ip당 req를 1분에 3번만 요청할 수있다. 3번이상 요청하면 어떻게 될지 봐버섯
<img src="https://velog.velcdn.com/images/console_log/post/e0cf0cfc-bb2c-4268-b2ca-3a39b1da89b1/image.png" alt=""></p>
<p>저렇게 코드와 메세지를 볼 수 있다. 더이상 req를 없게 되었다 ! 크 적당히 조절해서 만들면 될거 같다. 이런 편리한 기능을 모듈 다운받고 작성하면 되다니... Node.js 최고 !!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[동기,비동기 처리]]></title>
            <link>https://velog.io/@console_log/%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC</link>
            <guid>https://velog.io/@console_log/%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC</guid>
            <pubDate>Tue, 06 Dec 2022 12:44:45 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/console_log/post/1861208f-6490-4c5c-87cf-c67e3cb30030/image.jpg" alt=""></p>
<p>데이터를 처리하는 방식인 동기, 비동기 처리에 대해 많은 글이 있지만 정확하게 와닿지가 않았다. 최대한 내가 이해한 방식대로 서술해 보려고 한다.</p>
<p>동기 (Synchronous)와 비동기(Asynchronous)
동기 방식은 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉 A작업이 모두 진행 될때까지 B작업은 대기해야한다.
비동기 방식은 반대로 요청을 보냈을 때 응답 상태와 상관없이 다음 동작을 수행 할 수 있다. 즉 A작업이 시작하면 동시에 B작업이 실행된다. A작업은 결과값이 나오는대로 출력된다.</p>
<p><img src="https://velog.velcdn.com/images/console_log/post/b5471ec4-ddac-405f-b5b1-c233743927bc/image.png" alt=""></p>
<p>동기적 처리 (Synchronous)</p>
<pre><code>console.log(&quot;1st&quot;);
console.log(&quot;2nd&quot;);
console.log(&quot;3rd&quot;);
</code></pre><p>위와 같은 코스를 작성하고 실행해 보면 예상되는 결과는 1st, 2nd, 3rd일 것이다.</p>
<pre><code>&#39;1st&#39;
&#39;2nd&#39;
&#39;3rd&#39;</code></pre><p>예상했던 것처럼 1st, 2nd, 3rd가 차례대로 찍히는 것을 알 수 있다.
이처럼 코드가 위에서부터 아래로 내려오면서 하나가 끝나면 다음 코드가 실행되는 방식을 동기적 처리 (Synchronous)라고 한다.</p>
<p>비동기적 처리(Asynchronous)
비동기적 처리는 어떤것을 의미하는지 코드로 직접 보면</p>
<pre><code>console.log(&quot;1st&quot;)
setTimeout(()=&gt;{
console.log(&quot;2nd&quot;)},0)
console.log(&quot;3rd&quot;)</code></pre><p>setTimeout() 메소드를 사용했다.
setTimeout()메소드의 첫번째 인자는 콜백함수를 사용하였고, 두번째 인자는 지연시간이다.
두번째 인자가 0이기 때문에 바로 실행될거라 예상하고,
1st, 2nd, 3rd가 찍힐것이라 예상하였다.</p>
<pre><code>&quot;1st&quot;
null
&quot;3rd&quot;
&quot;2nd&quot;</code></pre><p>하지만 결과값은 1st, 3rd, 2nd가 찍혔다.
이는 setTimeout()메소드가 비동기적 API이기 때문이다.</p>
<p>위의 코드를 컴퓨터의 입장에서 해석해보면 다음과 같다.</p>
<p>첫번째 줄에서 console.log(&quot;1st&quot;);를 만나고 콘솔에 1st를 찍는다.
두번째 줄에서 setTimeout() 메소드를 만나서 해당 매소드가 비동기적 매소드이기 때문에 이를 처리하는 다른 프로그램에 맡긴다.
그러고 나서 곧바로 console.log(&quot;3rd&quot;)를 콘솔에 찍는다.
setTimeOut() 메소드를 처리하는 프로그램은 비동기적 API를 제외한 모든 코드가 실행 된 이후 결과를 콘솔에 찍는다.
비동기적 코드의 실행 결과는 동기적 코드가 전부 실행 되고나서 값을 반환한다.</p>
<p>동기는 디자인이 비동기보다 간단하고 직관적일수 있지만 결과가 주어질 때 까지 아무것도 못하고 대기해야하는 문제가 있다. 비동기는 동기보다 복잡하지만 결과가 주어지는데 시간이 걸려도 그 시간동안 다른 작업을 할 수 있어서 보다 효율적일 수 있다.</p>
<p>여기까지 동기와 비동기의 기본 개념이다.
다음 글에서 자바스크립트에서의 동기 비동기를 더 깊이있게 다뤄보겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[API,Restful API,json 데이터 형식]]></title>
            <link>https://velog.io/@console_log/APIRestful-APIjson-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D</link>
            <guid>https://velog.io/@console_log/APIRestful-APIjson-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D</guid>
            <pubDate>Mon, 05 Dec 2022 12:29:56 GMT</pubDate>
            <description><![CDATA[<p>API : (애플리케이션 프로그래밍 인터페이스) 프로그램들이 서로 상호작용하는 것을 도와주는 매개체이다. 
-&gt; api의 역할은 ?</p>
<ol>
<li>서버와 데이터베이스에 대한 출입구 역할을 한다. : 데이터 베이스에는 개인 정보들이 저장되는데 아무나 접근하지 못하게 허용된 사람들에게만 접근성을 부여해줄 수 있다.</li>
<li>애플리케이션과 기기가 원활하게 통신할 수 있도록 해준다. : 스마트폰 어플이나 프로그램의 데이터를 원활히 주고받을 수 있도록 도와주는 역할을 한다.</li>
<li>모든 접속을 표준화 해준다. : 디바이스, 운영체재 등과 상관없이 누구나 동일한 엑세스를 얻을 수 있다.</li>
</ol>
<p>-&gt; api의 유형은 </p>
<ol>
<li>Private api : 내부 api로 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행하는 것을 말하기에 3자에게 노출 되지 않는 api이다.</li>
<li>Public api : 개방형 api로 모두에게 공개되어 누구나 제한 없이 사용할 수 있다.</li>
<li>Partner api : 데이터 공유에 동의하는 특정인들만 사용할 수 있다. 비즈니스 관계에서 사용되는 편이고 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.</li>
</ol>
<p>-&gt; api의 장단점 
장점 : 모든 접속을 표준화하기 때문에 디바이스/운영체제등과 상관없이 조건만 맞다면 누구나 동일하게 사용이 가능하다. 그리고 기본적으로 api를 만들어 놓으면 또 개발할 필요없이 손쉽게 이용할 수 있다.
즉, 수레바퀴를 만들때마다 또 재발명할 필요가 없다는 말이다. 이런것을 데이터 접속의 표준화 편의성이라 말할 수 있다.
단점:  http게이트웨이는 해커의 타겟 대상이 될 수 있다는 점이다. 디도스 공격 같은 것이 취약하다고 할 수 있다.</p>
<p>Restful (Representational State Transfer) API :  두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다.
: 일반적으로 REST 라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다. &quot;REST API&quot;를 제공하는 웹 서비스를 &quot;RESTful&quot;하다고 할 수 있다. REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.
RESTful의 목적</p>
<ol>
<li>이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이다.</li>
<li>RESTful한 API를 구현하는 근복적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이며 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.
RESTful 하지 못하다고 말하는 경우</li>
<li>CRUD 기능을 모두 POST로만 처리하는 API</li>
<li>route에 Resource(CRUD method), id 외의 정부가 들어가는 경우 (studends/updataName)</li>
</ol>
<p>RESTful 조건
자원,행위,표현이 들어가면 된다.
행동이 들어가면 안된다. sendAuthCode (send가 행동이기 때문에 들어가면 안된다)
URI 는 소문자로 적어야하고 _ 가 들어가면 안되고 추가적으로 더 있다.</p>
<p>하지만 Restful에 대해 정확하게 이해하려면 REST를 먼저 알면 좋습니다.
REST 는 웹에서 데이터를 전송하고 처리하는 방법을 정의한 인터페이스 입니다. 모든 데이터 구조와 처리방식은 REST에서 URL을 통해 정의가 됩니다. 그렇기 때문에 매우 직관적으로 이해할 수 있습니다.
HTTP URI를 통해 자원(CRUD)을 명시하고 HTTP Method (POST,GET,PUT,DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을  의미합니다. </p>
<p>여기 위에서 언급한 자원이란 해당 소프트웨어가 관리하는 모든것인데요. 예를 들어 문서, 그림,DB,이미지, 동영상, 해당 소프트웨어 자체 등 이라고 말할 수 있습니다.
그렇기에 자원의 상태를 주고 받는 다는 것은 데이터를 주고 받는다라고 말할 수 있습니다.</p>
<p>그렇기에 데이터가 요청되어지는 시점에서 자원은 정보를 전달합니다. JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적입니다.</p>
<p>REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일 입니다. 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나입니다.
표현이 states code</p>
<p>json 데이터 형식
JavaScript Object Notation의 약자로 &#39;자바 스크립트 객체 표기법 이라고 말할 수 있습니다.
데이터를 쉽게 교환하고 저장하기 위해 텍스트 기반의 데이터 교환의 표준이라고 할 수 있습니다.</p>
<p>구조를 보면 자바스크립트 객체 표기법에 따른 구조로 구성할 수 있는데요. 이름과 값의 쌍으로 key: value 형식으로 구성, 중괄호로 감싸 표현할 수 있습니다. Key 와 value 사이에는 콜론이 들어갑니다.</p>
<p>여러 데이터를 나열할 경우 쉼표로 나열할 수 있습니다.</p>
<p>객체는 중괄호로 묶어서 표현하고 배열은 대괄호로 묶어서 표현합니다.</p>
<p>JSON에서 제공하는 기본 데이터 타입은 </p>
<ol>
<li>숫자</li>
<li>문자열</li>
<li>불리언</li>
<li>객체</li>
<li>배열</li>
<li>Null</li>
</ol>
<p>이 있습니다.</p>
<p>JSON을 key가 없는 배열 형태로 나타내여 인덱스별로 나누어 저장하고 접근한다. 예를 들어 [{ name : value, name : value …}, { name : value, name : value …}] 이런 형태로 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체 지향의 장단점 정리]]></title>
            <link>https://velog.io/@console_log/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5%EC%9D%98-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@console_log/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5%EC%9D%98-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 04 Dec 2022 12:41:38 GMT</pubDate>
            <description><![CDATA[<h3 id="장점">장점</h3>
<p>객체 지향 프로그래밍을 하면 데이터나 기능에 변화가 생기더라도, 관련된 객체만 신경을 쓰면 되니, 프로그래밍 하기 훨씬 편하다.
그리고 조금 더 의미 있는 단위로 나누기 때문에, 코드를 이해하거나, 다른 프로그램에서 재사용하기에도 더 수월하다. 꼭 전체가 완성되지 않아도 일부 기능만 사용해볼 수도 있기 때문에  테스트에도 더 유리하다.</p>
<h3 id="단점">단점</h3>
<p>반면,객체 지향의 단점은 코드를 잘 나누고 설계하는 것이 어렵다.
코드를 작성하기도 전에, 설계부터 많은 노력이 든다.</p>
<p>그래서 굳이 객체 지향적으로 만들 필요가 없는 경우들, 예를 들어 규모가 작아서 일을 나누지 않고 혼자 바로 만들어 버릴수 있다든지 혹은 데이터를 크게 신경쓰지 않아도 된다든지, 혹은 이후에 바뀔 염려가 거의 없느 ㄴ경우에는 이런 설계과정 없이 그냥 바로 만들어버리는게 더 빠르고 효율적일 수 있다.</p>
<p>또 객체 지향의 단점이라 하면, 사람이 이해하고 작성하기 편한 방식으로 코드를 나눠두다 보니, 컴퓨터가 이해하는데 시간이 걸려 실행하는 속도가 느려지거나, 저장 공간을 많이 차지하기도 한다.</p>
<h3 id="객체-지향-언어를-사용하면-좋은-곳"><strong>객체 지향 언어를 사용하면 좋은 곳</strong></h3>
<p>극도로 빠른 실행 속도가 필요한 분야 혹은 저장 장치나 성능이 제한적인 기기(스마트 워치,스마트 tv,스마트 냉장고)에서 돌아가는 프로그램을 만들 떄는 객체 지향을 안 쓰는 게 더 유리하다.</p>
<h3 id="요약">요약</h3>
<p><strong>장점</strong></p>
<ul>
<li>유지 보수에 용이하다.</li>
<li>가독성이 높다.</li>
<li>재사용하기 좋다.</li>
<li>테스트가 쉽다.</li>
</ul>
<p><strong>단점</strong></p>
<ul>
<li>설계가 어렵다.</li>
<li>작은 규모의 프로그램에서는 객체 지향적으로 작성하는 것이 더 오래 걸릴 수 있다.</li>
<li>극도로 빠르거나, 주어진 자원을 극도로 활용해야 하는 경우에는 좋지 않다.</li>
<li>임베디드와 같은 특정 분야에는 부적합하다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체지향의 등장 배경]]></title>
            <link>https://velog.io/@console_log/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%EC%9D%98-%EB%93%B1%EC%9E%A5-%EB%B0%B0%EA%B2%BD</link>
            <guid>https://velog.io/@console_log/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%EC%9D%98-%EB%93%B1%EC%9E%A5-%EB%B0%B0%EA%B2%BD</guid>
            <pubDate>Sat, 03 Dec 2022 13:46:29 GMT</pubDate>
            <description><![CDATA[<p>인스타그램같은 sns를 여러개발자가 만드는걸 상상해보자 
sns를 만들려면 필요한 기능, 즉 함수들이 있다.
보통 프로그램은 기능이 많고 복잡하기 때무네 개발자들은 혀벙ㅂ해야한다. 이때 개발자들은 프로그래밍작업들을 어떻게 나눌 수 있을까? 
일단 전체 윤곽을 완성하고 그 안에 어떤 함수가 필요한지 분석한다. 그리고 이걸 각자 나눠서 만든다.</p>
<p>각자 기능을 완성하면 하나로 합치고 sns를 완성시킨다. 
이렇게 전체를 각 부분으로 나눈뒤 각자 완성해 나가는걸 top down방식으라고 한다. 큰걸 쪼개서 작은걸로 나눈다는 의미다. 하지만 top down방식은 전체를 합쳐야 제대로 동작하는지 알 수있다는 것이다. 10개중 1개라도 마ㅣ완성이면 전체를 실행할 수 없다. 전체 프로그램이 실행되는 과정을 보면 예를 들어 로그인 기능은 아이디,비밀번호 같은 데이터들이 함수 파라미터로 넘어갔다가 리턴돼서 돌아오고 피드 올리기 같은 기능은 사진과 내용이 함수 파라미터로 넘어갔다가 다시 돌아오게 된다 이런방식으로 프로그램이 동작하게 되는데 그래서 하나의 데이터가 여러 함수에서 사용되기도 하고 언제 어떤 데이터가 사용될지 쉽게 예측할수 없다보니 코드 전체가 완성되기 전까지는 동작을 제대로 확인 할 수 없는것이다. 게다가 누군가 함수를 잘못 구현하면 다른함수도 잘못 영향을 받고 결국 전체가 망가지게 된다. 이런방식으로 프로그래밍을 하면 일부수정하기도 힘든데 하나의 기능만 수정하려ㅗㄱ해도 다른 기능들이 데이터가 연결돼있기 때ㅜㅁㄴ에 조금만 고쳐도전체코드를 점검해 봐야하는 그런 상황이 되는것이다 힘으,ㄴ 힘대로 들고 실수 하나가 매우 치명적이다 보니까 매우 비효율적이다. 이런 top down방식의 문제를 해결하기위해 개ㅔ발자들은 접근방식을 바꿔보기로 했다. 프로그램의 일을 나눌때 함수를 기준으로 나누는게 아니라 모든 데이터가 한곳에 모여서 기능이 얽혀있는게 아니라 함수 그러니까 기능이랑 변수, 관련있는 데이터를 하나로 묶어서 좀더 의미있는 단위로 나누기로 했다 이런방식으로 묶은걸 객체 object 라고 한다. 객체지향의 이 객체가 object 인것이다. 이 객체라는 개념을 적용해서 프로그래밍을 한다해서 객체지향 프로그래밍이라고 부르는 것이다. 이렇게 객체별로 코드를 나누게 되면 이해도 직관적이고 직접 한부분을 만들면서 테스트나 실행하기도 편하다 데이터의 변화가 있을대도 모든 코드 모든 함수를 다 확인해보는게 아니라 하나의 객체만 확인해보면 된다 고장이 났을때도 그 부분만 망가지고 나머지는 제대로 동작 하는것이다. (객체지향) 객체를 만들고 객체를 이용해서 큰걸로 만드는것을 bottom up 이라고 한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체지향 프로그래밍]]></title>
            <link>https://velog.io/@console_log/%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</link>
            <guid>https://velog.io/@console_log/%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</guid>
            <pubDate>Fri, 02 Dec 2022 14:08:32 GMT</pubDate>
            <description><![CDATA[<p>프로그래밍 언어를 어떤 기준으로 분류할수있을까? 보통 
무언가를 분류할 때 큰 사건 혹은 중요한 개념이 나타나면 그걸 기준으로 분류하는데 마치 사회에서 산업혁명이 이렁나고 그것에 따라 많은것이 바뀌면서 시대를 산업혁명 전후로 나눈것처럼 말이다. 
프로그래밍에서도 이런 핵심적인 사건이 있다. 그게 바로 객체지향의 등장이다.
객체지향은 대학ㅔ서도 한학기동안 배울 만큼 내용이 많다.</p>
<p>객ㅔ지향은 프로그래밍에대한 여러 접근방식중 하나인데 어떤 방식을 사용하는지에 따라 코드 전체가 완전히 달라지게 된다. 이중 객체지향은 지배적으로 많이 쓰이는 개념이고 이제는 객체지향을 모르면 개발자라고 할수없을 정도다. 
워낙 많이 사용하다보니 꽤 많은 프로그램이 객체지향에 맞춰 등장하게 됐다 객체지향으로 프로그래밍을 하겠다는 전제하에 모든 문법과 도구를 만들어둔 것이다. 심지어 객체지향을 몰라도 은연중에 객체지향 프로그래밍을 사용하게된다. 
하지ㄴ 객체지향 언어가 아니라고 해서 무건 안좋거나 옛날방식인건 아니다.속도등의 이유로 객체지향을 일부러 사용하지 않는 경우도 있다. c언어,fortran,assembly언어,haskell등 객체지향은 아니지만 요즘도 많이 쓰이는 언어이다. 이렇게 객체지향을 지원하는지에다라 프로그래밍 언어를 나눌수있는데 각자 장단점이 있기떄문에 내가 만들고자 하는 프로그램 혹은 일하고자하는 분야에 따라 객체지향 언어를 배우는게 좋을지 객체지향이 아닌 언어를 배우는게 좋을지 달라진다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래밍 언어의 발전]]></title>
            <link>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EC%9D%98-%EB%B0%9C%EC%A0%84</link>
            <guid>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EC%9D%98-%EB%B0%9C%EC%A0%84</guid>
            <pubDate>Thu, 01 Dec 2022 14:58:31 GMT</pubDate>
            <description><![CDATA[<p>컴퓨터는 계속해서 발전해왔다.
그에 맞춰 프로그래밍 언어도 발전했는데 
초창기 프로그래밍 언어는 수학계산을 위해 컴퓨터가 시작되었다. 그래서 최초 컴퓨터 이야기할때 주판이야기가 나오기도 한다. 
컴퓨터 역사르 살펴보면 톱니바퀴를 이용해서 계산하는 파스칼계산기가 시초이다. 
이게 컴퓨터라면 프로그래밍 언어는 무엇일까?
지난번 업로드를 보면 프로그램은 컴퓨터가 어떤일을 해야할지 알려주는 설명서라고했다. 숫자를 계산하는 식 예를 들어 256+984가 하나의 프로그램이다. 이프로그램을 실행시키면 1240이라는 계산 결과가 나온다 이컴퓨터에 다른 프로그램을 실행시키면 다른 결과가 나온다 123+456을 더하면 579가 나온다.여기서 프로그래밍 언어는 이게산결과를 얻을수있도록 톱니 바퀴를 굴리는거라고 볼 수있다. </p>
<p>이후에는 종이에 구멍을 뚫어 컴퓨터에게 원하는 숫자를 알려주기도했다 이경우에는 종이에 구멍을 뚫는것이 프로그래밍 언어인 것이다.
<br>한번만들어서 계속 쓸수있어 톱니바퀴보다 더 발전된 상태라 볼수있다. </p>
<p>기술이 발전하면서 번역,메세지발송도 하고싶어졌는데 그래서 더 기능이 많은 다양한 일을 할수있는 컴퓨터와 프로그래밈ㅇ언어를 만들었다. 
예전에는 프로그래밍 언어가 숫자로만 이루어졌었다면 지금은 더 다양한 표현이 필요해진거다 요즘엔 영어 숫자 수학기호가 섞인 형태의 코드를작성한다 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래밍 언어란?]]></title>
            <link>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%9E%80</link>
            <guid>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%9E%80</guid>
            <pubDate>Wed, 30 Nov 2022 14:30:37 GMT</pubDate>
            <description><![CDATA[<p>프로그래밍 언어를 이해하려면 컴퓨터 프로그램 프로그래밍언어 단어를 함께 살펴봐야한다. 
쉽게말해 컴퓨터는 우리의일을 대신해주는 기계고 프로그램은 컴퓨터가 어떤 일을 해야할지 알려주는 설명서이고 프로그래밍 언어는 그 설명서를 쓰기위해 사용하는 언어다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래밍이 어려운 이유]]></title>
            <link>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4-%EC%96%B4%EB%A0%A4%EC%9A%B4-%EC%9D%B4%EC%9C%A0</link>
            <guid>https://velog.io/@console_log/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4-%EC%96%B4%EB%A0%A4%EC%9A%B4-%EC%9D%B4%EC%9C%A0</guid>
            <pubDate>Tue, 29 Nov 2022 14:35:46 GMT</pubDate>
            <description><![CDATA[<p>프로그래밍 공부를 시작하려면 언어를  골라야하는데 종류가 매우 많다. 
사람마다 중요도를 추천하는것도 다르다. 자료구조,객체체지향,알고리즘 이것들 중에도 우선순위를 두기가 힘들다.. 
언어는 왜 이렇게 많은것이며 어떤언어를 선택해서 어떤걸 공부해야할지.
어떤분야에 관심이 있고 어떤 개발자가 되고싶은지, 심지어 성향에 따라 기술이 달라진다
디자이너도 브랜드디자이너, 제품디자이너 웹디자이너가 있듯 개발자도 여러종류가 있다. 
그래서 무작정 누군가의 추천을 따라 공부할게아니라 나에게 필요한게 무엇인지 스스로 판단하는 능력이 필요하다 
하지만 프로그래밍 자체를 모르면서 프로그래밍 분야나 기술용어릴 이해하기가 어렵다는거다. 모든분야를 다 자세하고 깊게 알 필요는 없지만 본격적인 프로그래밍에 앞서 프로그래밍에대한 전반적인 이해가 필요하다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[웹을 활용하는 여러가지 방법 ]]></title>
            <link>https://velog.io/@console_log/%EC%9B%B9%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%98%EB%8A%94-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@console_log/%EC%9B%B9%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%98%EB%8A%94-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Mon, 28 Nov 2022 14:51:42 GMT</pubDate>
            <description><![CDATA[<p>웹이 처음에는 페이지를 보여주는 정도였다. 하지만 웹의 기술이 발전하고 활용 가능성이 더 많아지면서 휍을 활용한 다양한 방식의 응용이 나타나고 있다. </p>
<p>첫번째로 싱글페이지앱이다. 싱글페이지는 하나의 페이지라는건데 
어떤 웹사이트를 보면 여러개의 패이지가있고 버튼을 클릭함에 따라 다른페이지로 이동하는 식으로 사용된다.
이게 일반적인 웹사이트인데 
싱글페이지 웹앱은 좀 다르다. 하나의 페이지가 있고 버튼을 클릭하면 내용만 그자리에 갈아 끼우는 방식인거다
페이지 이동이 없으니까 웹사이트가 아니니까 앱처럼 느껴지게 된다. 싱글페이지 앱의 예로는 페이스북,g메일,구글 맵 같은 것 들이 있다.</p>
<p>두번째는 하이브리드 웹 앱이다. 
일반적인 네이티브 앱의 일부를 웹사이트로 대체하는걸 말한다. 
예를 들어 앱의 광고를 달고 싶다고 할대 그러면 앱을 다운 받을대 그 과ㅇ고에 사용되는 이미지를 같이 받아가도록 해야한다. 근데 시간이 지나서 새로운 고아고로 바꾸려고 하면 사용자가 앱을 새로 다운받아야 한다. 아마 새로운 광고 보려고 업뎃 하는사람은 없을거다. 이런경우 앱에서 자주 바꾸고 싶은ㅇ 부분에 구멍을 뚫어 그 위치에 웹페이지 주소를 적어두는가=ㅓ다 그리고 사용자가 볼ㄸㅐ 그 구멍에 작은 웹페이지를 보여주면 된다 만약 이 웹페이지 내용을 바꾸고싶다며 ㄴ실시간으로 반영할수 있다. 사용자가 직접 앱을 업뎃하지 않아도 말이다. 하이브리드 웹 앱은 애초에 정해진 특정공간만 바꿀수있다는 단점이 있지만 여러경우에 꽤나 유용하게 사용 할 수있다.
 세번째는 프로그래시브 웹앱니다.
 웹앱이나 과 네이티브 엡은 서로 장단점이 있다. 이 둘의 장점만 합쳐놓은게 프로그레시브웹앱이다.
 일반적엔 웹앱은 앱스토어를 거쳐 설치하지않고 매욱 간편하게 실행하수있고 주소만 알려주면 되니까 다른사람에게 공유하기도 쉽고 사용자에게 실시간으로 업데이트 줄수있다는 장점이있다. 네이티브 앱은 이런장점은 없지만 인테넛 없어도 실행이 되고 푸시 알람처럼 os가 제공해주는 기능을 사용할 수 있다. 웹 앱에 네이티브앱의 기능까지 추가해서 네이트브웹앱과 사실상 차이를 못느끼게 하려는 것이 프로그레시브 웹앱이다. 프로그레시브웹앱인지 아닌지에대한 절대적인 기준은 없지만 인터넷이 연결되지 않은 오프라인에서도 동작,홈 화면에 설치 가능,os기능 사용가능, 앱의 내용을 실시간으로 업데이트 가능하면 프로그레시브 웹앱이라고 부른다 . </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[네이티브 애플리케이션과 웹 애플리케이션]]></title>
            <link>https://velog.io/@console_log/%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EA%B3%BC-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98</link>
            <guid>https://velog.io/@console_log/%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EA%B3%BC-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98</guid>
            <pubDate>Sun, 27 Nov 2022 13:31:32 GMT</pubDate>
            <description><![CDATA[<p>웹의 시장장악력은 점점 증가하고있다. 웹으로 처음에는 굉장히 단순한 웹페이지만 만들수 있었지만, 요즘은 많이
웹의 기술이 발전해서 다양한 기능이 동작한다. 
영화예매,옵주무,ㄴ영화보기 다 가능하다. 
일반 앱처럼 동작할 수 있는거다. 웹을 활용해서 앱처럼 동작하는걸 웹 애플리케이션이라고 한다. 그리고 웹 애플리케이션과 구분하기 위해서 기기의 os에서 바로 실행할수있는 앱을 네이티브 애플티케이션이라고 한다. 둘이 같아보여도 실행 방식은 다르다. 웹앱은 브라우저를 거쳐서 os에 맞닿아있고 네이티브앱은 바로 os에 맞닿아있다. 
사실상 브라우저도 하나의 네이티브 앱인 셈이다; 정리하자면 앱을 사용자에게 쓰게하려면 네이티브앱과 웹 앱 두가지 방식이 있는데 각자 장단점이 있다 기기에서 바로 실행하는 네이티브앱에서는 os와 기기에 내장된 여러 기능을 더 쉽게 활용할수있다 os에 맞닿아있기때문에 다운받아서 내 컴퓨터에 설치하기때문에 인터넷이 없어도 바로 연결 할 수있다. 하지만 단점으로는 네이티브앱은 설치 혹은 배포라는 과정을 반드시 거쳐야 한다는거다. 모바일앱을 생각해보면 앱을 다운로드 받을 수 있는 마켓이 있다. 안드로이드는 구글스토어 , ios는 애플 앱스토어에서 다운로드 받아서 사용하게 된다 만약 앱을 만든 회사에서 앱의 기능을 바꾸고싶으면 수저된 버전을 다시 마켓에 올려줘야한다 그리고 사용자는 새로운 버전으로 업데이트 해야한다.게다가 구글에서는 아무 앱을 받아주는게아니고 여러조건을 만족하는지 확인하기때문에 마켓에 등록하는데도 시간이 소요된다. 웹 앱은 설치,혹은 배포라는 과정이 없기때문에 이런단점이 해결된다 웹페이지처럼 주소만 입력하면 바로 접근이 가능하고 수정사항이 있어도 시릿간으로 반영이 된다 접근성이 더 좋은거다. 링크로 앱을 공유할수있습니다. 비록 기기를 사용하는 기기에는 제한사항이 있지만..그래서 간단한 기능만으로 이루어진 서비스에는 네이티브앱으로 만들지않고 웹앱으로 서비스 하는 경우가 많다. 웹앱은 적은투자와 기능으로 서비스를 런칭하고 싶은 회사들의 대안이 되고있다.  </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[크로스플랫폼]]></title>
            <link>https://velog.io/@console_log/%ED%81%AC%EB%A1%9C%EC%8A%A4%ED%94%8C%EB%9E%AB%ED%8F%BC</link>
            <guid>https://velog.io/@console_log/%ED%81%AC%EB%A1%9C%EC%8A%A4%ED%94%8C%EB%9E%AB%ED%8F%BC</guid>
            <pubDate>Fri, 25 Nov 2022 08:06:02 GMT</pubDate>
            <description><![CDATA[<p>개발을 하다보면 플랫폼 파편화 문제를 겪게 되는데 이것을 해결하게 위해 나온개념이 크로스 플랫폼이다. 
크로스 플랫폼이란 여러 os 여러 cpu등에서 동일하게 실행할수 있는 환경을 말한다. 
요즘은 다양한 플랫폼을 사용하고 원하는 앱도 워낙 다양해서 크로스 플랫폼이 매우 중요해졌다. </p>
<p>컴퓨터마다 프로그램 실행방식은 다르기때문에 항상 여러버전의 프로그램을 만들어야했는데 이문제를 해결하기 위해 개발자들이 가상의 플랫폼, 가상의 컴퓨터를 만들어서 다양한 컴퓨터위에 가상의 컴퓨터를 켜 놓으면 마치 동일한 컴퓨터에서 실행하는 것처럼 느껴진다. 이제 앱 개발자는 각 컴퓨터에 맞는 앱을 다 만들 필요 없이 가상의 컴퓨터에서 실행되는 프로그램 하나만 만들면 된다. 이건마치 usb나 hdmi처럼 하나의 규격을 정한것과 ㅂ ㅣ슧한네 모니터선을 연결할때 모니터 선이 안맞으면 어댑터를 끼운다 가상의 컴퓨터는 이런거라 생각하면 된다. 이제 앱 개발자들은 가상의 컴퓨터만 생각하고 프로그램을 만들면 된다.
이걸 시도한 언어가 java고 그 가상의 컴퓨터가 jvm 이다. jvm의 의미를 보면 자바를 이용한 가상의 컴퓨터라고 이해하면 되는데 우리가 머신코드라고 하면 컴퓨터가 실행하는 코드라고 생각하면된다. 자바의 슬로건은 write once run anywhere 코드는 한 번만 작성하고 어디서든 실행해라는 의미다.  모든 플랫폼에대해 각각 프로그램을 만드는게 아니라 자바 가상머신에서 동작하는 단 한개의 프로그램만 작성한다.자바 가상머신은 자바로 쓰여진 프로그램이 들어오길 기다리는것이다. 상호간의 약속, 규격을 통해 플랫폼 의존성 문제를 해결했다. 다양한 플랫폼에 이식성이 좋고 범용적으로 사용할수 있기때문에 지금의 인기를 얻었다고해도 과언이 아니다. </p>
]]></description>
        </item>
    </channel>
</rss>