<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>john_with_smile.log</title>
        <link>https://velog.io/</link>
        <description>개발자 새싹🌱     The only constant is change.</description>
        <lastBuildDate>Thu, 21 Dec 2023 06:23:15 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>john_with_smile.log</title>
            <url>https://images.velog.io/images/john_with_smile/profile/4bc760df-f975-45ee-88da-72daf81d3d61/IMG_2886.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. john_with_smile.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/john_with_smile" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 56]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-56</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-56</guid>
            <pubDate>Thu, 21 Dec 2023 06:23:15 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/f20bdd81-746b-452d-949e-c2c4795b37ab/image.png" alt=""></p>
<h3 id="학교나-회사에서-사용하는-근거리-네트워크-이더넷">학교나 회사에서 사용하는 근거리 네트워크, 이더넷</h3>
<p>전화와 케이블은 컴퓨터를 상당히 먼 거리에 있는 대형 시스템과 연결하는 네트워크 기술이다. 이는 또 다른 발전으로 이루어졌는데, 이것이 이더넷이다.</p>
<p>1970년대 초, 제록스의 팔로알토 연구소에서 알토라는 컴퓨터를 개발했다. 최초의 윈도 시스템과 텍스트보다 더 많은 것을 표시할 수 있는 비트맵 디스플레이가 쓰였다. 여기서 문제는 어떻게 서로 연결하느냐, 프린터같은 자원을 어떻게 공유하냐였다. 여기서 로버트 메트칼프와 데이비드 바그스가 발명한 해결책은 이더넷이라는 이름의 네트워킹 기술이었다. 이더넷은 단일 동축 케이블에 연결되어 있는 모든 컴퓨터 간에 신호를 전달하는 방식을 사용했다. 이 케이블은 오늘날의 TV테이블과 비슷했다. 각 컴퓨터는 고유한 식별 변호가 있며 이를 이더넷 주소라고 한다. 이더넷의 프라이버시나 자원 배분 문제는 깔끔한 편이다. 네트워크 인터페이스 데이터 전송을 시작했는데 다른 사람도 전송 중이라는 것을 감지하면, 중지하고 잠시 기다렸다가 다시 시도한다. 프라이버시같은 경우는 원래는 문젯거리가 아니였다. 모두 같은 회사의 직원이고 같은 작은 건물에서 일하고 있었기 때문이다. 오늘날은 소프트웨어로 이더넷 인터페이스를 무차별 모드(promiscuous mode)로 설정할 수 있는데, 이더넷 인터페이스가 자신이 받기로 명시된 것뿐만 아니라 네트워크상에 있는 모든 메시지를 읽는다는 뜻이다. 이렇게 네트워크상에서 데이터를 엿보는 행위는 스니핑이라고 한다. 그 해결책으로 케이블상의 패킷을 암호화하는 것이며, 요즘은 대부분으 트래픽이 기본적으로 암호화된다. 
이더넷에서 정보는 패킷으로 전송된다. 패킷은 정보를 담고있는 일련의 비트 또는 바이트이다. 발신자가 정보를 패킷으로 싸서 보내면 수신자가 패킷을 열어서 정보를 확인할 수 있다. 이는 우편봉투나 엽서로 예시를 들면 이해하기 쉽다. 
이더넷은 크게 성공을 거둔 기술이며 수십억대의 이더넷 장치가 판매되었다. 속도도 3Mbps에서 10Gbps까지 빨라졌다. 물론 더 저렴하고 단일 칩으로도 기능한다. 하지만 아직까지 수백 미터의 한정된 범위에서 작동한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 55]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-55</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-55</guid>
            <pubDate>Wed, 20 Dec 2023 19:06:12 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/db82c3a9-be28-4498-aed7-db200c5ba954/image.png" alt=""></p>
<h2 id="킬로바이트에서-메가바이트로">킬로바이트에서 메가바이트로</h2>
<p>아날로그 전화선의 56kKbps 제한은 설계단계에 지정된 것이다. 이후 나온 두 가지 기술은 전화망보다 최소 100배 더 높은 대역폭으로 대안을 제공한다.</p>
<p>케이블TV 방송을 전송하는 케이블을 사용한다. 보통 수백Mbps정도다. 이 속도가 빠르다는 것은 어떻게 보면 환상에 불가하다. 시청 여부와 무관하게 같은 TV신호가 모든 집으로 전송된다. 다행히 서로 그렇게 많이 간섭하고 있지는 않으며, 중요한 것은 개인적인 정보를 보호하는 암호화 부분이다.</p>
<p>또다른 문제로 이전 케이블 네트워크는 방송국에서 가정으로 향하는 단방향이었기 때문에 고객에게서 방송국으로 정보를 보낼 방법이 없었다. 이후 케이블 시스템은 양방향이 되었고 회사로 데이터를 보내는 속도는 보통 다운로드보다 느리다.</p>
<p>그밖에 가정용으로 꽤 빠른 네트워크 기술 중 하나인 DSL은 전화를 기반으로 한다. 음성 신호를 간섭하지 않기 때문에 전화와 웹서핑을 모두 사용할 수 있다. 하지만 이 방식은 전화 회사 교환국에서 5km이내에만 사용할 수 있다. </p>
<p>광케이블 시스템은 다른 기술보다 훨씬 빠르다. 신호는 전송 손실이 낮은 유리 섬유를 따라 빛의 펄스로 보내지는데, 신호는 수 킬로 미터를 나아간 다음 다시 증폭될 수 있다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 54
]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-54</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-54</guid>
            <pubDate>Thu, 30 Nov 2023 02:01:03 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/88003555-7b10-4951-991f-f235e1ddd1e6/image.png" alt=""></p>
<h3 id="삐-삐--추억의-모뎀-소리">삐-삐- 추억의 모뎀 소리</h3>
<p>전화망은 대규모로 성공을 거둔 전 세계적 네트워크다. 처음에는 음성 트래픽 전달하는 것이 시작이었지만, 상당량의 데이터 트래픽까지 전송하는 방향으로 진화했다. 초창기 가정용 컴퓨터는 대부분 전화선을 통해 온라인에 연결했다. </p>
<p>주택용 유선 전화 시스템은 여전히 아날로그 음성 신호를 주로 전달한다. 그래서 디지털 데이터는 비트를 소리로 변환했다가 다시 비트로 변환하는 장치가 필요하다. 이 과정을 변조, 다시 되돌리는 것을 복조라고 하며, 이를 수행하는 장치를 모뎀이라고 한다. 옛날엔 굉장히 크고 비쌌지만 오늘은 사실상 무료에 가깝다. 하지만 유선 전화를 사용하여 인터넷에 연결하는 일 자체가 드물고, 모뎀이 달린 컴퓨터 또한 없다.</p>
<p>모뎀의 단점으로는 전용 전화선이 필요하며 전화선이 하나일 경우 음성 통화를 할지 데이터 연결을 할 지 선택해야 한다. 제일 큰 문제인 속도로 최대 56Kbps, 초당 7KB정도에 제한이 걸려있다. 이는 굉장히 오래걸리는 속도로 비디오나 소프트웨어 업데이트로 며칠이 걸릴 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 53]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-53</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-53</guid>
            <pubDate>Sat, 25 Nov 2023 18:31:30 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/74a599eb-7be8-4b5f-a070-9e367fed0fc9/image.png" alt=""></p>
<h3 id="통신">통신</h3>
<p>통신은 4부 구성 중 하드웨어와 소프트웨어 다음으로 나오는 세번 째 주제다. 통신이랑 온갖 유형의 컴퓨팅 장치가 우리 대신 대화하는 것을 뜻한다. 이 대화에는 좋지 않은 목적의 대화도 포함되어, 프라이버시, 보안, 권리 경쟁 등 복잡한 문제와도 연결되어있다.</p>
<p>사람들은 여러가지 아이디어와 방식으로 옛날부터 장거리 통신을 했다. 마라톤의 어원인 아테네의 승전소식 &quot;기뻐하라, 우리가 승리했다&quot;도 흐임로운 예시가 될 수 있다. 미국의 조랑말 속달 우편은 3,000km를 달려 우편물을 전달하는 서비스였고 약 2년 정도밖에 운여오디지 않았지만 미국 서부의 상징으로 남아 있다. 그 외에도 신호등, 봉화, 깃발, 거울, 북, 비둘기, 목소리까지 모두 장거리 통신에 이용되었다.</p>
<p>첫 기계적 시스템 중 하나는 1792년경에 발명된 시각 전신이다. (사진) 탑에 설치된 기계식 셔터나 팔을 기반으로 한 신호 시스템을 이용했다. 릴에서 파리까지 230km 글자 한 개가 전송되는 데 걸리는 시간은 약 10분이었다고 한다.</p>
<p>현대 통신 시스템의 문제는 1790년대에도 비슷했다. 정보표현, 메시지 교환, 오류탐지 및 복구에 대한 표준이 필요했다. 정보 전송속도, 보안과 프라이버시문제도 있다. 1844년도의 몬테크리스토 백작 61장에는 백작이 전신 운영자를 매수해서 파리에 거짓 메시지를 보내도록 하여 사악한 은행가인 당글라르 남자의 재정적 파명을 초대하는 이야기가 나온다. 이는 중간자 공격의 완벽한 예시다.</p>
<p>이 외에도 시각 전신은 기본적으로 가시성이 좋아야 사용할 수 있었고 이후 1840년도의 전기 전신으로 대체 되었다. 이 전기 전신은 미국의 주요 도시를 연결했다. 이후 전화가 통신의 혁명을 가져오게 되었다. 전화 시스템은 다른 기술보다 안정성이 뛰어났기 때문에 오랫동안 우위를 점했다. 기술 발전과 함께 팩스와 모뎀이 등장했고 아날로그 전화 시스템을 통해 디지털 데이터를 전달하기 시작했다. 광케이블의 등장으로 더 빠른 통화와 정보를 보낼 수 있게 되었다.
정치적으로는 통신 산업의 제어권 규제가 정부기관에서 민간기업으로 이동함에 따라 전 세계적으로 혁명이 일어났다. 오늘날 통신 회사는 주로 인터넷에 기반을 둔 새로운 통신 시스템이 제기하는 위협에 지속적으로 직면하면서 수익과 시장 점유율을 잃어가는 상황에 놓여있다. 간단한 예시로 전화와 스카이프를 비교할 수 있다. 이 떄문에 기존 업체들은 기술적, 법적, 정치적 수단을 동원해서 수익과 독점을 유지하기위해 노력한다.
 이런 대응은 망 중립성에 대한 보편적인 문제에 관한 논의로 이어진다. 망 중립성은 모든 네트워크 사업자와 정부는 인터넷에 존재하는 모든 데이터를 동등하게 취급하고, 사용자, 내용, 플랫폼, 장비, 전송 방식에 따른 어떤 차별도 하지 않아야 한다는 뜻이다. 이 문제에 대한 해결은 인터넷의 미래에 크게 영향을 미칠 것이며 이 원칙은 유지하는 것이 바람직하다.
 한편 인터넷에서는 잘못된 정보, 가짜 뉴스, 편견과 혐오, 음모, 명예 훼손 등 다양한 부정적 단편도 존재한다. 이를 위한 사이트는 콘텐츠에 책임을 져야할까? </p>
<h3 id="53-전화부터-와이파이까지-네트워크의-기본-속성">53. 전화부터 와이파이까지, 네트워크의 기본 속성</h3>
<p>네트워크와 일상생활은 깊이 연결되어있다. 전화, 케이블, 이더넷같은 유선네트워크, 와이파이와 휴대전화같은 무선 네트워크가 포함된다. 모든 통신 시스템은 기본적인 속성을 공유한다. 보내는 쪽에서는 정보를 매체를 통해 전송할 수 있는 표현으로 변환한다. 받는 쪽에서는 그 표현을 사용할 수 있는 형태로 다시 변환한다.
대역폭은 모든 네트워크의 가장 기본적인 속성으로, 네트워크가 데이터를 얼마나 빨리 전송할 수 있는지를 뜻한다. 이는 초당 몇비트부터 테라비트까지 다양하다. 
레이턴시 또는 지연은 정보가 시스템을 통과하는데 걸리는 시간을 측정한 값이다. 지터는 지연의 변동성을 뜻한다. 범위는 주어진 기술로 네트워크가 지리적으로 얼마나 확장될 수 있는지를 정의한다. </p>
<p>라디오처럼 여러 수신자가 한 발신자를 신호를 수신하는 구조인 브로드캐스트, 틀정 발신자와 수신자를 짝지어 주는 점대점 방싱 중 어떤 방식을 취하는지도 고려해야할 네트워크의 속성이다.
기타 고려해야 할 요인으로는 하드웨어, 인프라 비용, 전송 데이터 양 등이 있다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 51, 52]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-51-52</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-51-52</guid>
            <pubDate>Thu, 23 Nov 2023 02:44:53 GMT</pubDate>
            <description><![CDATA[<h3 id="파이썬은-어떻게-작동할까">파이썬은 어떻게 작동할까?</h3>
<p>파이썬은 컴파일러, 어셈블러, 자바스크립트와 유사항 방법을 거쳐 실행 가능한 형태로 변환되지만, 세부사항은 다르다.
파이썬을 실행할때는 프로그램의 텍스트가 파이썬 컴파일러로 전달된다. 컴파일러는 프로그램에 에러가 있는지 검사하고, 프로그램을 모형 컴퓨터처럼 만들어 낸 컴퓨터의 어셈블리 언어 명영어로 컴파일한다. 그리고 나서 컴파일러는 파이썬 프로그램이 하기로 되어 있는 모든 동작을 수행하고자 가상 머신을 실행한다. 
파이썬을 명령줄 황경에서 실행한다면 고성능 계산기로 사용할 수 있다. 파이썬 문장을 한번에 하나씩 타이핑하면 바로 컴파일되고 실행되기 때문이다. </p>
<h3 id="요약">요약</h3>
<p>누구든 프로그래밍하는 방법을 아는 것이 좋다고 생각한다. 기본적으로 프로그래밍을 배우면 컴퓨터가 무엇을 하고 어떻게 작동하는지 더 잘 이해하는 데 도움이 된다. 프로그래밍은 만족스럽고 보람 있게 시간을 보낼 수 있는 방법이다. 더 나은 취업기회와 높은 보수도 받을 수 있다.</p>
<p>물론 프로그래밍은 모든 사람에게 필요한 기술은 아니며 모든 사람에게 프로그래밍을 배우도록 강요하는 것은 타당하지 않다. 프로그래밍에 흥미를 갖게 하고, 시작하는 것을 돕고, 기회를 충분히 제공하고, 가능한 한 많은 장애물을 제거하고, 순리대로 흘러가도록 두는 것이 최선인 것 같다.</p>
<p>컴퓨터과학 내에서도 프로그래밍은 중요하지만 전부는 아니다. 학문으로서 컴퓨터과학은 앞에서 살짝 보았던 알고리즘과 자료 구조에 대한 이론적이고 실용적인 연구도 포함한다. 더불어 컴퓨터 아키텍처, 프로그래밍 언어, 운영체제, 네트워크, 그리고 다른 학문과 교류, 협력하는 응용분야를 포함한다. </p>
<p>컴퓨터과학은 누군가에게는 훌륭한 학문이며, 이 분야의 많은 아이디어가 폭넓게 응용될 수 있지만, 모든 사람이 정규 컴퓨터과학 교육을 받도록 하는 것은 지나친 일이라고 본다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 49, 50]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-49</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-49</guid>
            <pubDate>Tue, 03 Oct 2023 09:21:09 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/23482aae-d690-4791-9ceb-b01499783927/image.png" alt=""></p>
<h3 id="더하기-프로그램-만들기">더하기 프로그램 만들기</h3>
<p>자바스크립트와 마찬가지로 파이썬으로 만들면 어떨까?</p>
<pre><code>sum = 0
num = input()
while num != &#39;0&#39;:
    sum = sum + int(num)
    num = input()
print(&quot;the sum is&quot;, sum)</code></pre><p>간단하다!</p>
<h3 id="파이썬으로-그래프-그리기">파이썬으로 그래프 그리기</h3>
<p>파이썬의 강점은 사용할 수 있는 라이브러리가 많다는 것이다.
그래프를 그릴 때 사용사는 matplolib 라이브러리를 사용해보자. </p>
<pre><code>import math
import matplotlib.pyplot as plt

linear = []
log = []
nlogn = []
quadratic = []

for n in range(1, 21):
    linear.append(n)
    log.append(math.log(n))
    nlogn.append(n * math.log(n))
    quadratic.append(n * n)

plt.plot(linear, label=&quot;N&quot;)
plt.plot(log, label=&quot;log N&quot;)
plt.plot(nlogn, label=&quot;N log N&quot;)
plt.plot(quadratic[:len(linear)], label=&quot;N * N&quot;)  # Corrected indexing here
plt.legend()
plt.show()
</code></pre><p><img src="https://velog.velcdn.com/images/john_with_smile/post/ab31740b-6df2-4118-890a-29f9c7ebaa82/image.png" alt=""></p>
<p>코랩사이트를 통해 작성해보면 바로 이쁜 그래프를 보여준다. 
import문을 통해서 수학 라이브러리와 그래프 그리기 라이브러리에 접근하고 이름이 길기 때문에 plt 로 이름을 변경했다.
계산해서 그래프로 그릴 값은 3행 네 개의 리스트에 저장되며, 처음에는 []; 모양을 통해서 빈 리스트로 시작한다.
1부터 20까지 시간하는 루프를 돌면서 리스트에 해당하는 값을 준다. 
루프가 끝나고 나면 plot 함수를 호출하여 그래프를 그린다.
quadratic 함수는 너무 빨리 증가하므로 처음 10개만 표시[0:10]을 통해 슬라이스를 사용.
legend 함수로 레이블을 표시하며, show함수를 통해 그래프를 생성한다.
matplotlib를 통해서 다양한 기능을 쉽게 사용한 것을 볼 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 47, 48]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-47</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-47</guid>
            <pubDate>Tue, 12 Sep 2023 03:53:54 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/6f134d8d-6a2c-4d28-9e1a-cc50887600c8/image.png" alt=""></p>
<h3 id="자바스크립트는-어떻게-작동할까">자바스크립트는 어떻게 작동할까?</h3>
<p>자바스크립트는 브라우저가 웹페이지에서 자바스크립트를 발견하면(script 태그를 발견하는 예시)프로그램의 텍스트를 자바스크립트 컴파일러로 전달한다. 컴파일러는 프로그램에 에러가 있는지 검사하고, 프로그램을 모형 컴퓨터처럼 만들어 낸 컴퓨터의 어셈블리 언어 명령어로 컴파일한다. 이후 모형 컴퓨터같은 시뮬레이터를 실행하여 자바스크립트 프로그램이 수행하기로 되어 있는 모든 기능을 수행한다. </p>
<p>이후 시뮬레이터와 브라우저는 밀접하게 상호작용한다. 예를 들어, 사용자가 버튼을 눌렀을 때 브라우저는 시뮬레이터에 버튼이 눌렸음을 알려 준다. 이후 추가적인 자바스크립트에 관한 이야기는 좋은 책과 온라인 강의들이 많다. </p>
<p>프로그래밍은 때로는 좌절스러울 정도로 어렵기도 하지만 매우 재미있는 일이 되기도 하고, 심지어 이걸로 괜찮은 수입을 거두기도 한다. 누구나 프로그래머가 될 수 있지만, 세부사항을 놓치지 않는 안목이 중요하며, 미세한 부분에 집중하면서도 큰 그림을 볼 수 있는 능력이 있으면 금상첨화다. 또한 신중하지 않으면 프로그램이 제대로 작동하지 않거나 전혀 작동하지 않을 수 있으므로, 세부 사항을 바로잡지 않고는 못배기는 습관을 기르는 것도 도움이 된다.</p>
<p>대부분의 분야가 그렇겠지만 아마추어 프로그래머와 진짜 전문가의차이는 크다. </p>
<h3 id="파이썬으로-hello-world-출력하기">파이썬으로 Hello, world 출력하기</h3>
<p>파이썬은 몉년 전에는 뭔가를 다운로드 했어야 했지만 지금은 이제 브라우저에서도 실행하기 쉬워졌다.</p>
<pre><code>&gt;&gt;&gt; print(&quot;hello, world&quot;)</code></pre><p>물론 컴퓨터의 터미널에서 쓰려면 설치해야하지만, 구글의 코랩을 쓴다면 설치하지 않고 이용할 수 있다. 코랩은 주피터 노트북이라는 널리 사용되는 대화형 툴의 클라우드 버전이다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 46]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-46</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-46</guid>
            <pubDate>Wed, 06 Sep 2023 15:15:43 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/74d410ee-9be0-4ac9-8120-ee1d094457db/image.png" alt=""></p>
<h3 id="자바스크립트로-구글-지도에-위치-표시하기">자바스크립트로 구글 지도에 위치 표시하기</h3>
<p>자바스크립트는 정교한 웹 애플리케이션을 만들기 위한 확장 메커니즘으로 중요한 역할을 한다. 구글 지도는 좋은 예시로 구글 지도는 마우스 클릭뿐만 아니라 자바스크립트 프로그램을 통해 지도 이용을 제어할 수 있도록 라이브러리와 API를 제공한다. 따라서 이 API를 이용하면 누구나 구글이 제공하는 지도에 정보를 표시하는 자바 스크립트 프로그램을 작성할 수 있다. </p>
<pre><code>function intiMap(){
    var latlong = new google.,maps.LatLng(38.89768, -77.0365);
    var opts = {
        zoom: 18,
        center: latlong,
        mapTypeId: google.maps.MapTypeId.HYBRID
    };
    var map = new google.maps.Map(
                document.getElementById(&quot;map&quot;), opts);
    var marker = new google.maps.Marker({
        position : latlong,
        map:map
    });
}</code></pre><p>이 예시는 백악관의 지도를 표시하는 구글 지도 API를 사용한 예시 코드이다. 
(물론 여기서 html과 인증키를 받아야한다)</p>
<p>웹에서는 구글 지도 API같은 프로그래밍 인터페이스를 비롯하여 자바스크립트를 점점 더 많이 사용하고 있다. 자바스크립트의 한 가지 단점은 소스 코드를 공개할 수 밖에 없어 지적 재산권을 보호받기 어렵다는 점이다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 45]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-45</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-45</guid>
            <pubDate>Tue, 05 Sep 2023 08:23:14 GMT</pubDate>
            <description><![CDATA[<h3 id="루프와-조건문">루프와 조건문</h3>
<p>수 합산하기 자바스크립트</p>
<pre><code>let num, sum;
sum = 0;
num = prompt(&quot;Enter ynew value, or 0 to end&quot;);
while (num != &quot;0&quot;) {
    sum = sum + parseInt(num);
    num = prompt(&quot;Engter new value, or 0 to end&quot;)
}
alert(sum);</code></pre><p>0이 입력되기 전까지 사용자가 입력한 수를 읽은 다음에 전체를 합산해 출력하는 프로그램이다. 앞에서 이미 prompt를 보았고 변수 선언 부분도 보았다. 
아직 살펴보지 않은 부분은 while루프문이다. </p>
<p>컴퓨터는 일련의 명령어를 몇 번이고 반복해서 수행하기에 더할 나위 없이 좋은 장치다. 문제는 프로그래밍 언어로 반복을 표현하는 방법이다. 모형 컴퓨터에서 GOTO 명령어와 IFZERO 명령어를 사용한 적 있는데 고수준 언어에는 while 로 보통 표현된다.</p>
<p>while문은 괄호사이에 있는 조건을 검사하고, 만일 조건이 참이면 중괄호 사이에 있는 문장{...}을 순서대로 실행한다. 그런 다음 돌아가서 조건을 다시 검사한다. 이 사이클은 조건이 참일 동안 계속된다. 조건이 거짓이 되면 실행은 루프의 닫는 중괄호 다음에 있는 문장으로 이루어진다. </p>
<p>예시 코드에서는 num != &quot;0&quot;을 사용했는데 변수 num이 문자 0이 아닌지를 의미한다. &quot;0&quot;은 문자의 0을 의미하는데, 이건 자바스크립트의 인상적인 부분 중 하나이다. 따옴표가 없다면 숫자값 0이고 &quot;0&quot;면 자바스크립트에서는 문자값 0이 된다. </p>
<h4 id="if-else">if else</h4>
<p>자바스크립트의 if-else는 C언어와 동일하다</p>
<pre><code>let max, num;
max = 0;
num = prompt(&quot;Enter new value, or 0 to end&quot;);
while(num != &quot;0&quot;){
    if(pareInt(num) &gt; parseInt(max)){
        max = num;
    }
    num = prompt(&quot;Enter new value, or 0 to end&quot;);
}
alert(&quot;Maximum is &quot; + max);</code></pre><p>if else문은 두 가지 형태로 제공한다. 예시에는 else 부분이 없다. if 이후 괄호 안의 조건이 참이면 중괄호{}안의 문장이 실행된다. 이후 다음 문장의 실행이 이어진다. 만약 조건이 거짓이면 실행되는 else 부분이 있다. 
이 예제에는 한계가 있는데, 음수를 입력하면 0만이 아온다는 것이다. 이 한계는 테스트의 중요성을 시사한다. 테스트는 프로그램에 임의의 값을 입력해 보는 것 이상의 작업을 필요로 한다. 좋은 테스터는 가능한 모든 부정적인 입력을 고려한다. 프로그램이 커질수록 모든 테스트 케이스를 생각해 내기가 더욱 어려워진다는 것이다. </p>
<p>완벽한 해결책은 없지만, 신중하게 프로그램을 설계하고 구현하는 것을 생각해볼 수 있고 일관성과 온전성 검사를 포함하는 것도 좋은 방법이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 44]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-44</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-44</guid>
            <pubDate>Thu, 31 Aug 2023 06:29:33 GMT</pubDate>
            <description><![CDATA[<h3 id="사용자-이름-입력받아-출력하기">사용자 이름 입력받아 출력하기</h3>
<p>두 번째 자바스크립트 프로그램은 사용자가 이름을 입력하도록 요청하고, 맞춤형 인삿말을 표시한다.</p>
<pre><code>let username;
username = prompt(&quot;what&#39;s your name?&quot;)
alert(&quot;Hello, &quot; + username)</code></pre><p>여기서는 새로운 개념이 등장한다. let 이라는 변수를 선언하는 부분이다. 변수는 프로그램이 실행되는 동안 값을 저장할 수 있는 주기억 장치상의 공간을 뜻한다. 프로그램이 무엇을 하는지에 따라 값이 변경될 수 있기 때문에 변수라고 한다. 변수를 선언하는 것은 모형 어셈블리 언어에서 했던 것처럼 메모리 위치에 이름을 지정하는 일의 고수준 언어 버전이다. 비유하자면 선언문은 등장인물, 즉 희곡에 나오는 인물의 목록을 명시한다. 여기서는 변수를 username으로 지정하고,이 프로그램에서 맡은 역할을 말해준다. </p>
<p>prompt는 자바스크립트 라이브러리 함수이다. alert와 유사하지만 사용자에게 입력을 요청할 수 있다. 이후 그 입력한 텍스트가 무엇이든 사용할 수 있고 그 값은 = 로 연결된 username으로 할당된다.</p>
<p>=는 &quot;오른쪽에 있는 연산을 수행하고 그 결과를 왼쪽에 있는 이름으로 된 변수에 저장하라&quot; 는 의미이다. 이는 모형 컴퓨터에서 누산기 값을 메모리에 저장하는 것과 같다.
이 연산을 할당(assignment)라고 하며, 등호는 동등하다는 뜻이 아니라 값을 복사한다는 것을 뜻한다.</p>
<p>마지막으로 플러스 기호 + 가 사용되는데</p>
<p>alert(&quot;hello,&quot; + username)</p>
<p>이는 hello라는 단어와 사용자가 입력한 이릅을 결합하기 위해 사용된 것이다. 여기서도 플러스는 더하는 것이 아니라 텍스트 문자로 이루어진 두 문자열을 연결하는 것을 의미한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 43
]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-43</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-43</guid>
            <pubDate>Wed, 30 Aug 2023 11:22:24 GMT</pubDate>
            <description><![CDATA[<h3 id="자바스크립트로-hello-world-출력하기">자바스크립트로 hello world 출력하기</h3>
<p>자바스크립트 프로그램은 크기가 정말 작다. html을 사용하여 띄워보겠다. html에서 자바스크립트는 script 태그 안에 넣으면 된다.</p>
<pre><code>&lt;html&gt;
    &lt;body&gt;
        &lt;script&gt;
        alert(&quot;hello, world&quot;)
        &lt;/script&gt;
    &lt;/body&gt;
&lt;/html&gt;</code></pre><p>이렇게 작성하면</p>
<p>알림창으로 hello, world가 출력된다. </p>
<p>여기서 alert는 자바스크립트 라이브러리의 일부로 확인이나 닫기를 누를 수 있는 대화 상자를 띄운다.
이후 더 재미있는 코드를 만들 수 있다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 42
]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-42</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-42</guid>
            <pubDate>Fri, 25 Aug 2023 11:54:09 GMT</pubDate>
            <description><![CDATA[<h3 id="프로그래밍-언어의-주요-개념">프로그래밍 언어의 주요 개념</h3>
<p>프로그래밍 언어는 모두 계산을 일련의 단계로 풀어서 상세히 설명하기 위한 표기법이다. 그래서 기본 아이디어는 같은데, 모든 프로그래밍 언어는 입력 데이터를 읽고, 산술 연산을 하고, 계산이 진행됨에 따라 중간 값을 저장하고 가져오며, 이전에 계산한 값을 기반으로 어떻게 진행할지 결정하고, 그 과정에서 결과를 표시하고, 계산이 완료되면 결과를 저장하기 위한 방법을 제공한다.</p>
<p><img src="https://velog.velcdn.com/images/john_with_smile/post/b049f39c-0d2a-4bc7-8e2d-fa1e50d7326b/image.png" alt=""></p>
<p>언어이기 때문에 문법 syntax가 존재한다. 정확하게 표현하지 않으면 에러나 불평이 나오게된다. 항상 모든 프로그램에 대해서 구문 상 정확한지, 그렇다면 의미는 모호하지 안항야 하지만 항상 이렇게 이상적이지는 않다. 단어가 가진 모호성이나 개발자의 실수, 혹은 시간이 흐르면서 언어가 변할 수도 있다. </p>
<p>대부분의 언어는 세 가지 측면에서 살펴볼 수 있다. 첫 번째는 언어 그자체다. 컴퓨터에 산술 연산을 수행하고, 조건을 검사하고, 계산을 반복하라고 지시하는 문장이다. 두 번째로, 다른 이들이 작성했지만 프로그램을 만들 때 사용할 수 있는 코드 라이브러리가 있다. 라이브러리는 직접 작성하지 않아도 되는 사전 제작된 부품으로, 대표적인 예로는 수학 연산, 날짜 계산, 텍스트 검색과 조작을 위한 함수가 있다. 세 번째는 프로그램 실행 환경에 접근하는 기능이다. 브라우저에서 실행되는 자바스크립트 프로그램은 사용자에게서 입력을 받고, 사용자가 버튼을 누르거나 폼에 타이핑하는 것 같은 이벤트에 반응하며, 브라우저가 다양한 콘텐츠를 표시하거나 다른 웹페이지로 가게 만들 수 있다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 41
]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-41</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-41</guid>
            <pubDate>Wed, 23 Aug 2023 17:56:59 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/e1d85876-ca95-4073-ac6c-d5de6de5fa7a/image.png" alt=""></p>
<h3 id="자바-스크립트와-파이썬">자바 스크립트와 파이썬</h3>
<p>&quot;스마트폰을 갖고 놀지만 말고 프로그램을 만들어 보세요!&quot; 
-버락 오바마, 2013</p>
<p>프로그래밍 언어는 엄청나게 많다. 오바마 대통령이 권유한 것처럼 스마트폰 앱을 만들고 싶자면 자바, 스위프트가 운영체제에 따라 필요하다. 책에서는 자바스크립트와 파이썬에 대해서 다룬다. 아마추어부터 전문 프로그래머 사이에서까지 널리 사용된다.</p>
<h4 id="자바스크립트">자바스크립트</h4>
<p>자바스크립트는 모든 브라우저에 포함되어 있어 소프트웨어를 별도로 다운로드할 필요가 없다. 웹페이지에 적용하면 바로 보여줄 수 있다. 언어 자체도 간단한 편이며 놀라울만큼 유연하다. 모든 웹페이지는 자바스크립트 코드를 어느 정도 포함하고 있다. 
 단점도 있다. 자바스크립트 언어는 어색한 부분도 있고, 의도와 다른 동작을 표시하기도 한다. 물론 개선되고 있다. 결론적으로 배울 가치는 충분하다.</p>
<h4 id="파이썬">파이썬</h4>
<p> 파이썬은 매우 폭넓은 응용 분야에 활용 가능하며 일상적으로 프로그래밍하기에 아주 좋다. 요즘은 웹사이트에서도 실행가능하게 되어서 별도의 소프트웨어가 필요없을때도 있다. 프로그래밍을 처음배둔다면 입문용으로 굉장히 훌륭하다.</p>
<p>어느 하나의 프로그래밍 언어에 익숙해지고 간단한 프로그램을 만들다보면 다른 언어를 배울 때도 더 쉽게 배울 수 있게 된다. 코드카데미, 칸 아카데미, w3스쿨즈 등 초보자가 프로그래밍을 배울 수 있는 유용한 사이트가 많다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 39, 40
]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-39-40</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-39-40</guid>
            <pubDate>Mon, 21 Aug 2023 08:33:05 GMT</pubDate>
            <description><![CDATA[<h3 id="소프트웨어의-계층-구조">소프트웨어의 계층 구조</h3>
<p>소프트웨어에도 지층처럼 계층이 존재하며 이렇게 나눔으로써 프로그래머가 복잡성을 처리하는 데 도움이 되는 방법 중 하나이다.</p>
<ol>
<li>하드웨어 - 시스템이 실행중이더라고 버스를 이용하여 장치를 추가하고 제거할 수 있다는 점을 제외하면 하드웨어는 거의 변경할 수 없다.</li>
<li>운영체제 - 엄밀히 해서 커널이라고 하며 운영체제는 하드웨어의 특수한 속성을 숨기고 애플리케이션에는 특정 하드웨어의 여러 가지 세부 사항과 독립된 인터페이스 또는 외관을 제공한다.</li>
<li>라이브러리 집합 - 프로그래머 개개인이 기능을 새로 만들어 낼 필요가 없도록 일반적으로 유용한 서비스를 제공한다. date명령어부터 암호기법 등등 다양한 범위의 라이브러리가 존재한다. 그래서 대부분의 윈도우 애플리케이션이나 기본 그래픽 요성 요소가 비슷해 보이는 것이다.
가끔은 커널, 라이브러리, 애플리케이션 간의 구분이 모호할 때가 있다. 중요한 것은 애플리케이션이 다른 애플리케이션의 동작에 간섭하지 않도록 하는 데 필요한 것은 무엇이든 운영체제의 역할에 속한다는 것이다. 같은 논리로 브라우저는 운영 체제의 일부가 아니다. 어떤 브라우저는 공유된 자원이나 제어 기능에 간섭하지 않으면서 하나 또는 여러 개가 동시에 실행될 수 이기 때문이다. 이 이야기는 미국 법무부와 마이크로소프트 간의 반독점 소송을 통해 굉장히 유명해진 이야기다. </li>
</ol>
<p>요약</p>
<p>애플리케이션은 사용자가 원하는 작업을 처리한다. 운영체제는 애플리케이션이 자원을 효율적이고 공평하게 공유하면서 서로 간섭하지 않을 것을 보장하는 조정자 또는 교통경찰 역할을 한다. 기본적으로오늘날 사용되는 모든 컴퓨터는 운영체제가 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 38]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-38</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-38</guid>
            <pubDate>Fri, 18 Aug 2023 12:38:32 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/dbab2720-7cb7-477f-83b6-21426fa8efba/image.png" alt=""></p>
<h3 id="여러-작업을-수행하는-애플리케이션">여러 작업을 수행하는 애플리케이션</h3>
<p> 애플리케이션은 운영체제를 플랫폼삼아 작업을 수행하는 온갖 종류의 프로그램이나 소프트웨어 시스템을 총징하는 용어다. 애플리케이션은 클 수도있고, 작을수도 있고, 기능이 많거나 적을 수도 있고, 무료일 수도, 아닐 수도 있다. </p>
<p>브라우저를 예로 들어보자. 브라우저는 비동기적 이벤트를 처리해야 한다. 비동기적 이벤트란 예측할 수 없는 시점에 일정한 순서를 따르지 않고 발생하는 이벤트를 뜻한다. 예를 들어, 사용자가 링크를 클릭하면 브라우저는 페이지에 대한 요청을 보내는데, 브라우저가 항상 그 응답을 기다리고 있을 수 없지만 움직임에 대해 바로 반응해야 한다. 스크롤, 클릭, 재생 등등 다양한 것들에 대해서 비동기적으로 반응하게끔 구현하여야 한다.</p>
<p>브라우저는 확장 프로그램에 콘텐츠 처리를 위임할 수 있는데, PDF나 동영상 같은 표준 포맷을 처리하는데 이 방식을 사용한다. 물론 이를 위해서는 브라우저는 해당 확장 프로그램을 시작하고, 데이터 자체와 데이터에 대한 요청을 보내고 받고, 처리된 데이터를 디스플레이에 표시하기 위한 메커니즘을 제공해야 한다.</p>
<p>이 모든 복잡성을 보면 우리는 브라우저 또한 운영체제와 비슷하다고 생각할 수 있다. 자원을 관리하고, 동시에 일어나는 활동을 제어하고 조정한다. 다수의 충처에 정보를 저장하고 가져오며, 애플리케이션 프로그램이 실해오딜 수 있는 플랫폼을 제공한다. </p>
<p>과거에는 브라우저를 운영체제로 사용하는 것이 굉장히 힘들었지만, 오늘날에서는 수많은 서비스가 오로지 브라우저 인터페이스로만 접근할 수 있게 되었다.(이메일, 달력, 음악, sns 등) 이 추세는 계속될 것이며 구글의 크롬북의 경우는 크롬OS를 사용하며 대부분의 저장 기능은 웹을 사용한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 37]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-37</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-37</guid>
            <pubDate>Thu, 17 Aug 2023 04:58:47 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/0c42840e-356c-4f0f-aaf3-4bf0d2d30f93/image.png" alt=""></p>
<h3 id="파일을-휴지통에-넣을-때-일어나는-일">파일을 휴지통에 넣을 때 일어나는 일</h3>
<p>파일이 제거될 때는 파일의 블록이 미사용 목록으로 돌아가고 파일의 폴더 엔트리는 삭제돼서 파일이 사라진 것처럼 보인다. 하지만 우리가 아는 것과 실제는 많이 다르다.</p>
<p>파일이 윈도우나 맥OS에 제거되면 휴지통으로 간다. 휴지통은 사실 또 다른 폴더처럼 보인다. 휴지통이라는 폴더로 이동한 셈이다. 휴지통 비우기가 원래 의도했던 제거 작업에 가깝다. 휴지통 비우기를 클릭하면 휴지통 폴더 자체에 있는 폴더 엔트리는 삭제되고 해당 블록이 미사용 목록에 들어가지만, 그 내용은 아직 삭제되지 않은 상태다. 이 미사용 목록에서 꺼내져서 새로운 파일에 할당되기 전까지는 새로운 내용으로 덮어 쓰이지 않는다.</p>
<p>이렇게 삭제가 바로 일어나지 않는다는 것은 여러분이 제거했다고 생각하는 정보가 아직 존재하고, 누군가 그 정보를 찾을 방법을 안다면 그 정보에 접근할 수 있음을 뜻한다. 물리적 블록 단위로 드라이브를 읽는 프로그램, 즉 파일 시스템 계층 구조를 통하지 않는 프로그램이라면 이전 내용을 확인할 수 있다. 이런 방식은 만약 디스크에 문제가 생겨 시스템에 문제가 생겨도 정보를 복원할 수 있는 가능성을 제시한다. 반대로 악의적인 행위를 방지하기 위해서는 블록을 여러 번 덮어 씌움으로써 파일을 제거하는 방법, 강한 자석 근처에 놓아 자성을 없애 버리는 방법, 물리적으로 파괴하는 방법이 있다. 물론 클라우드나 백업을 확인해야 한다. 디지털 기록은 빠르게 확산되고 복사도 손쉬우며 숨기기도 쉽다. 우리는 컴퓨터에 기록하는 모든 정보에 무슨 말을 쓸지 조심해야한다는 것이다.</p>
<h3 id="다른-파일-시스템">다른 파일 시스템</h3>
<p>파일 시스템의 추상화는 다른 저장 매체에도 적용된다. CD-ROM과 DVD, USB드라이브나 SD카드도 마찬가지다. 이들 저장매체를 윈도우 컴퓨터에 연결하면 또 다른 디스크 드라이브로 나타난다. 저장된 내용을 파일 탐색기로 탐색할 수 있고, 내장 드라이브와 똑같이 파일을 읽고 쓸 수 있다. 약간 용량이 작고 접근 속도가 느릴 수 있다는 것이 차이점이다.</p>
<p>동일한 장치를 맥이나 리눅스 컴퓨터에 연결해봐도 똑같이 작동한다. 이 방식은 사실상의 표준인 마이크로소프트 파일 시스템 FAT일 가능성이 높지만, 추상화가 완벽하기 때문에 알 필요 없다. 하드웨어 인터페이스와 소프트웨어 구조의 표준화 덕분에 이러한 추상화가 가능하다.</p>
<p>네트워크 파일 시스템도 다른 예시로 들 수 있다. 네트워크 파일 시스템은 소프트웨어를 활용해서 다른 컴퓨터의 파일 시스템이 마치 다신의 컴퓨터에 있는 것처럼 파일 탐색기, 파인더, 또는 다른 프로그램을 사용하여 접근하게 해준다. 소프트웨어가 차이점은 숨기고 균일한 인터페이스를 제공함으로써 파일 구조가 로컬 컴퓨터에 있는 일반 파일 시스템처럼 보이게 한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 36]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-36</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-36</guid>
            <pubDate>Mon, 07 Aug 2023 07:25:40 GMT</pubDate>
            <description><![CDATA[<h3 id="파일-시스템과-블록">파일 시스템과 블록</h3>
<p>파일 시스템은 운영체제에서 하드 디스크, CD, 등등의 다른 이동식 메모리 장치같은 물리적인 저장 매체를 파일과 폴더의 계층 구조처럼 보이게 하는 부분이다. 파일 시스템은 논리적 구성과 물리적 구현 간의 분리를 보여 주는 좋은 사례이다. 즉 다양한 종류의 장치에 정보를 조직화하고 저장하지만, 운영체제를 통해 모두 동일한 인터페이스로 표시해준다. 파일 시스템이 정보를 저장하는 방식은 우리는 잘 모르지만 실생활에 영향을 미칠 뿐더러 법적인 영향력을 가지기 때문에 우리가 알아두어야 한다.</p>
<p>윈도우 파일탐색기나 맥의 파인더를 사용하면 최상위폴더, C드라이브부터 시작하는 계층 구조를 보여주고 그 안에 폴더와 파일, 그 안에 폴더와 파일들이 보인다. 컴퓨터의 모든 정보는 이 파일 시스템에 저장되고 우린 이 파일 시스템을 통해서 정보에 접근한다. 파일 시스템은 이 모든 정보를 관리하면서 앱이나 운영체제의 나머지 부분이 정보를 읽고 쓸 수 있도록 접근 가능하게 만든다. 또한 파일에 대한 접근이 효율적으로 수행되고 서로 간섭하지 않도록 조정하고, 데이터의 물리적인 위치를 파악한다. </p>
<h3 id="보조-기억-장치-파일-시스템">보조 기억 장치 파일 시스템</h3>
<p>파일 시스템은 매우 다양한 물리적 시스템이 균일한 논리적 구조로 나타나게 하는 방법을 보여주는 사례다. 작동방법을 알아보자. 예시로 500GB의 드라이브는 5천억바이트를 담을 수 있다. 하지만 드라이브의 소프트웨어는 각각 1,000바이트 덩어리 또는 블록 5억개로 표시한다. 파일 시스템은 한 파일이 사용하는 바이트를 다른 파일이 사용하는 바이트와 같은 블록에 저장하지 않는데 만약에 블록이 꽉 차지 않는다면 약간의 공간이 낭비되겠지만 이건 파일 관리를 손수 관리해야하는 수고에 비하면 크지 않는 대가이다.파일에 대한 정보를 가지고 있는 파일 엔트리를 통해서 관리도 된다.
어떤 관점에서는 폴더 또한 파일이다. 폴더는 다른 폴더와 파일이 어디에 있는지 정보를 담고 있는 파일이기 때문이다. 가장 낮은 관점에서 보면 폴더는 그저 블록이고 모두 같은 메커니즘으로 관리되는 셈이다.</p>
<h3 id="프로그램이-파일에-접근하는-법">프로그램이 파일에 접근하는 법</h3>
<p>기존 파일에 접근하려 할 때는 계층 구조의 최상위부터 시작해서 파일 경로명의 각 요소에서 해당하는 폴더를 찾아가며 검색하게 된다. 교율적이며 검색의 범위를 좁혀갈 수 있고 작업 속도를 높이기 위해 캐싱도 가능하다.</p>
<p>프로그램이 새 파일을 생성하려고 하면, 파일 시스템에 요청을 해서 적절한 폴더에 새로운 엔트리를 넣으며 0의 크기를 가진 폴더를 만든다. 후에 프로그램이 파일에 데이터를 쓰면 파일 시스템은 요청된 정보를 담기에 충분한 수의 미사용 블룩을 찾아 데이터를 추가하고, 폴더의 블록에 그 블록들을 넣고, 애플리케이션으로 돌아간다.<img src="https://velog.velcdn.com/images/john_with_smile/post/8ef0e9de-02b6-4aa0-bbcd-551e8b3bc08b/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 35]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-35-1iqapzgl</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-35-1iqapzgl</guid>
            <pubDate>Wed, 02 Aug 2023 05:12:45 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/7f5c5ba3-807c-475d-8001-7d7b5f11f3cd/image.png" alt=""></p>
<h2 id="운영체제가-일하는-법">운영체제가 일하는 법</h2>
<p>컴퓨터가 켜졌을 때 프로세서는 영구 기억 장치에 저장된 약간의 명령어를 실행해서 작동을 시작하도록 구성되어 있다. 그런 다음 이 명령어로 작은 플래시 메모리에서 명령어를 읽는데, 여기에는 디스크상의 알려진 위치, USB 메모리, 네트워크 연결을 통해 더 많은 명령어를 읽는 코드가 포함되어있다. </p>
<p>이런 컴퓨터가 작동을 시작하는 과정은 자력으로 해내다 라는 표현의 부트스트래핑(bootstrapping)이라고 불렸는데, 짧게 부팅(booting)이라고 하게 되었다. 이렇게 부팅이 끝나면 우리가 필요한 일에 컴퓨터를 사용할 수 있게 도와준다. 각 이벤트에 반응하는 식인데, 창의 x버튼을 누르면 파일을 저장하시겠습니까? 라고 묻게하고, 프로그램에게 할당된 자원을 회수하는 식이다. </p>
<h3 id="시스템-콜">시스템 콜</h3>
<p>운영체제는 하드웨어와 다른 소프트웨어 간의 인터페이스를 제공한다. 운영체제는 하드웨어가 실제보다 상위 레벨의 서비스를 제공하는 것처럼 보이게 함으로써 프로그래밍을 더 쉽게할 수 있도록 한다. 파일로 데이터를 저장, 데이터 가져오기, 키보드 입력, 마우스 움직임, 디스플레이 그리기가 포함된다. 운영체제는 이런 서비스를 표준화된 방식으로 이용할 수 있게 하고, 애플리케이션은 운영체제의 특정 부분에 통제권을 넘겨주는 특별한 명령어를 실행한다. 운영체제에 서비스를 요청하는 이 진입점을 시스템 콜이라고 한다.</p>
<h3 id="디바이스-드라이버">디바이스 드라이버</h3>
<p>운영체제와 프린터나 마우스 같은 특정 종류의 하드웨어 장치 간에 가교 역할을 하는 코드다. 드라이버 코드는 특정 장치가 어떤 일을 하도록 하는 방법을 자세히 알고 있다. 특히 드라이버는 특정 장치의 특이한 속성과 시트렘의 나머지 부분을 분리한다. 키보드 처럼 종류는 다양하지만 동일한 역할을 하는 장치에는 운영체제가 필요로 하는 기본 속성과 동작이 있는데, 드라이버 인터페이스는 운영체제가 서로 다른 장치에 균일한 방식으로 접근하도록 해서 장치를 전환하기 쉽게 해준다. 
우리가 사용하는 운영체제에는 많은 디바이스 드라이버가 이미 있으며 부팅 시에는 시스템에 필요한 드라이버를 불러오는 작업도 이루어진다. </p>
<h3 id="다양한-디지털-장치와-운영체제">다양한 디지털 장치와 운영체제</h3>
<p>기술 발달 덕분에 장치들은 전반적으로 앞에서 살펴봤던 범용 컴퓨터와 비슷한 모습을 띠고 있다. 카메라, 컴퓨터, 요즘은 시계도 그러하다. 성능이 좋은 프로세서, 큰 메모리, 렌즈와 디스플레이같은 주변장치, 인터페이스, 네트워크를 갖추고 있다.
이런 추세가 계속되면서 각 장치 별로 운영체제를 만들기 보다는 범용 운영체제를 사용하는 방식이 더 타당하게 되었다. 사용 환경이 특수한 경우가 아니라면 전용 시스템을 개발하거나 값비싼 상용 제품의 라이선스를 얻는 것보다는 리눅스에서 불필요한 부분을 뺀 버전을 사용하는 편이 더 쉽고 저렴하다. 리눅스는 견고하고, 개조하기 용이하고, 이식 가능하고, 무료이기 때문이다. 단점은 GPL같은 라이선스에 따라 결과물 코드 일부를 공개해야 될 수도 있다는 점이다. 저작권 보호에 논쟁을 불어일으킬 수 있지만, 킨들과 티보를 비롯한 많은 장치의 사례를 보면 적절히 대처할 수 있는 것으로 보인다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 34]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-34</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-34</guid>
            <pubDate>Mon, 24 Jul 2023 08:37:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/dab0d1bb-9713-4690-b73f-b999781bb1aa/image.png" alt=""></p>
<h3 id="가상-운영체제와-가상-머신">가상 운영체제와 가상 머신</h3>
<p>운영체제도 수 합산하기 같은 간단한 프로그램과 마찬가지로 그저 하나의 프로그램이다. 초기 운영체제의 경우는 크기가 작았는데, 메모리도 더 작고 작업이 더 단순했기 때문이다. 초창기의 운영체제는 한 번에 한 개의 프로그램만 실행했다. 메모리도 100KB로 오늘날의 프로그램 하나가 차지하는 MB나 GB와는 차이가 크다. 현재는 매우 크고 복잡한 만큼 다양한 일을 처리한다. </p>
<p>실제적인 예시로 보자면 유닉스 운영체제 6판은 1975년에 2명이 작성했고 C와 어셈블리 언어 9,000행으로 이루어져 있다. 오늘날의 윈도우 10은 정확히는 공개된 적은 없지만 5천만 행 정도로 추측된다.</p>
<p>이 예시를 통해서 생각해 볼 수 있는 것은 운영체제도 단지 프로그램이므로 이론상으로는 여러분이 직접 작성할 수 있다. </p>
<h3 id="가상-머신">가상 머신</h3>
<p>진짜 컴퓨터든 모형 컴퓨터 같은 상상의 컴퓨터든 간에, 컴퓨터인 것처럼 작동하는 프로그램을 흔히 가상 머신이라고 한다. 컴퓨터는 소프트웨어로만 존재하지만 마치 하드웨어인 것 처럼 그 작동방식을 모방하는 프로그램이다. 브라우저에는 자바스크립트 프로그램을 해석하기 위한 가상 머신이 있다. 안드로이드 폰에도 자바 가상머신이 있다. 이 가상머신이 사용되는 이유는 물리적 장비를 만들어서 출하하는 것보다 프로그램을 작성해서 배포하는 것이 더 쉽고 더 유연하기 때문이다.</p>
<p>클라우드 컴퓨팅 또한 이 가상머신에 의존한다. 제공 업체들은 저장 공가노가 네트워크 대역폭이 충분한 물리적 컴퓨터를 대량으로 보유하고 있고 이 자원을 이용해 고객에게 컴퓨팅 선능을 제공한다. 고객들은 이 때 1:1 보다는 1:여럿의 컴퓨터 지원을 받게 된다. 대표적인 회사로는 아마존 웹 서비스 AWS가 있다. 넷플릭스 같은 대형 업체를 비롯해서 많은 회사가 자체 서버를 운영하는 것보다 클라우드 컴퓨팅을 활용하는 것이 비용 면에서 더 효율적이라고 여긴다. 규모의 경제, 작업량 변화에 대한 높은 적응성, 내부 직원의 필요성 감소 덕분이다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일 1로그 100일 완성 IT지식 - Day 33]]></title>
            <link>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-33</link>
            <guid>https://velog.io/@john_with_smile/1%EC%9D%BC-1%EB%A1%9C%EA%B7%B8-100%EC%9D%BC-%EC%99%84%EC%84%B1-IT%EC%A7%80%EC%8B%9D-Day-33</guid>
            <pubDate>Thu, 06 Jul 2023 08:22:25 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/john_with_smile/post/87a07dbd-6bbc-4db1-a57f-5657e7195fa8/image.png" alt=""></p>
<h3 id="컴퓨터를-작동하게-만드는-운영체제">컴퓨터를 작동하게 만드는 운영체제</h3>
<p>소프트웨어의 주요한 유형인 운영체제와 애플리케이션을 살펴보려고 한다. 운영체제는 컴퓨터 하드웨어를 관리하고 다른 프로그램을 실행할 수 있게 하는 소프트웨어의 기초 구조물이며 그 위에서 실행되는 프로그램을 애플리케이션이라고 한다. </p>
<p>우리는 일상에서 다양한 프로그램을 쓰고있다. 이를 던문적으로 애플리케이션이라고 쓰며 어떤 작업에 &quot;응용&quot;하는 것이라는 데서 나오는 것 같다. 애플의 앱스토어 이후 대중적인 단어가 되었다.</p>
<p>1950년대 초에는 앱과 운영체제 간에 구별이 없었다. 컴퓨터는 한 번에 한개의 프로그램만 실행할 수 있을 정도의 성능이었기 때문이다. 컴퓨터가 더 복잡해짐에 따라 프로그램을 전문적으로 실행하는 작업이 필요했고, 이런 작업을 자동화할 수 있도록 돕는 프로그램에서 운영체제가 시작됐다. </p>
<p>운영체제는 하드웨어가 발전됨에 따라 더 발전했다. 오늘날의 마이크로 소프트 제품을 제외하고는 유닉스나 리눅스에서 파생된 것이라고 할 수 있다. 최신 컴퓨터는 실로 복잡한 물건이기 때문에 이처럼 정교한 물건을 다루려면 프로그램을 이용해 제어하는 수밖에 없다. </p>
<p>운영체제는 컴퓨터의 자원을 제어하고 할당한다. 프로세서를 관리하면서 프로그램을 스케줄링하고 프로그램 간의 관계를 조정한다. 이런 프로세스가 수백 개 동시에 실행되며 일부는 우리가 직접 실행한 프로그램이지만 대부분은 우리에게 보이지 않는 시스템 작업이다. 
운영체제는 주기억 장치 또한 관리한다. 메모리에 프로그램을 로드해서 프로그램이 명령어 실행을 시작할 수 있게 해준다. 효과적인 메모리 사용을 위해서는 알맞은 공학적 기법이 필요하다. 필요할 때 일부만 메모리에 가져오고 비활성화 상태일 때는 꺼내서 디스크로 복사해두는 것인데, 이러한 처리를 스와핑이라고 한다. 프로그램은 마치 전체 컴퓨터를 독점하고 메모리가 무제한인 것처럼 작성되기 때문에 이런 적절한 조정이 필요하다. </p>
<p>운영체제는 보조 기억 장치에 저장된 정보도 관리한다. 파일 시스템이라는 운영 체제의 주요 구성 요소가 우리가 컴퓨터를 사용할 때 보는 폴더와 파일의익숙한 계층 구조를 제공한다.</p>
<p>마지막으로 운영 체제는 컴퓨터에 연결된 장치들의 활동을 관리하고 조정한다. 프로그램은 다른 창과 겹치지 않는 창 전체에 그래픽을 온전히 표시하는 것처럼 구현된다. 디스플레이상에 있는 여러개의 창을 관리하는 잡얼을 수행하면서 이동, 및 조절 시 적절히 펴시되게 한다. 운영체제는 키보드와 마우스를 통해 들어오는 입력이 그 정보를 기다리고 이쓴ㄴ 프로그램으로 전달되도록 해준다. 유무선 네트워크,는 물론 프린터와 스캐너와 데이터를 교환하기도 한다. +</p>
]]></description>
        </item>
    </channel>
</rss>