Book review

비전공자를 위한 이해할 수 있는 IT 지식

sort0707 2021. 9. 7. 09:55

이 책을 읽고 인공지능 기본 공부를 했었더라면 얼마나 좋았을까?

너무나도 친절하고 알아듣기 쉽게 알려주는 책이었다.

쉽게 설명을 해준다는 건 '얼마나 그 분야에 정통했는가'이다.

나도 예전에 비해 훨씬 쉽게 음악을 가르치고 있으니,

감사하게도 다행히 점점 내공이 쌓이고 있다는 것이 분명하다!

음악을 가르치는 일을 하다 보니 앱을 하나 만들고 싶다는 생각이 들어

문화예술 창업 멘토링도 받았는데,

그분을 만나기 전에 이 책을 읽고 갔었다면 더 좋았을 듯싶었다.

(성심성의껏 상담해 주신 김수현 대표님 감사합니다!)

이 책을 통해 머릿속이 더 정리되었고,

올해 안에 서비스 기획서를 멋지게 만들어야겠다!


IT 서비스는...완벽한 프로세스가 없고, 고객의 니즈와 회사의 사정에 맞춰

그때그때 서비스가 계속 '발전'되어 나갑니다.

서비스가 발전하는 이 흐름이 바로 기획입니다. 그래서 기획자는

항상 고객을 포함한 모든 서비스 구성원들과 대화를 해야 합니다.

IT 산업에서 일하는 기획자에게 가장 먼저 필요한 건 '파이썬'이나 '자바'가 아닙니다.

바로 '커뮤니케이션'입니다. 모든 구성원과 원활하게 대화할 수 있어야 합니다.

개발자의 말을 이해하기 위해서는 IT 세상의 용어들을 정리해야 합니다.

그런데 IT 세상은 변화가 너무 빠릅니다.

6개월에 하나씩 새로운 기술과 트렌드가 등장합니다.

이렇게 빠른 IT 세상에서, 작은 용어들만 정리해서는 큰 그림을 그릴 수 없습니다.

발전한다는 말은 다양한 의미일 수도 있지만, 보통은 사용하기 편해지는 방식으로 개선되는 것을 뜻합니다.

이런 프로그래밍 언어를 구분하는 하나의 기준이 있다면, 바로 '저수준'과 '고수준'입니다.

'저수준'은 '컴퓨터 친화적인 언어'입니다. 고수준은 '인간 친화적인 언어'죠.

CPU는 컴퓨터의 머리이고, 보조기억장치인 HDD 와 SDD는 컴퓨터의 창고라고 볼 수 있습니다.

CPU는 따로 데이터를 저장하지 않기 때문에 데이터를 연산하거나 처리하려면 저장된 데이터를 CPU로 보내줘야 합니다.

이때 CPU는 창고 역할을 하는 기억장치인 HDD 와 SDD에 신호를 보냅니다.

보조기억장치는 CPU보다 속도가 매우 느리기 때문에...(중략)

'메모리'라는 CPU의 개인 작업 공간을 만들었습니다.

이제 CPU는 보조기억장치에 필요한 데이터를 그때그때 요청하지 않아도 됩니다.

운영체제가 하드웨어를 컨트롤 하고, CPU와 메모리 등을 관리해주기에

우리는 클릭 몇 번 만으로 편하게 파워포인트를 실행하고 카카오톡을 설치할 수 있습니다.

운영체제 회사들은 개발자들의 삶에도 큰 영향을 미치고 있습니다.

자바로만 프로그램을 만들어도 모든 운영체제에서 사용할 수 있게 된 것입니다.

파이썬으로 프로그램을 만들면 윈도우나 맥 OS 등의 운영체제 위에서 프로그램을 설치 및 실행할 수 있습니다.

물론 자바나 파이썬 같은 프로그램을 사용하는 방식의 단점도 있습니다. 속도가 느리다는 것이죠.

운영체제 위에 프로그램을 올리고, 그 위에 또 프로그램을 돌리는 것이기 때문입니다.

컴퓨터가 연결된 작은 지역을 LAN(Local Area Network)이라고 표현합니다.

IP 주소는 위치에 따라, 컴퓨터에 따라 고유합니다. 이동하면 IP 주소는 계속 바뀝니다.

서버를 다른 말로 '백 엔드'라고 부릅니다.

'클라이언트', '클라', '프론트 엔드', '프론트' 모두 같은 말입니다. 고객의 컴퓨터.

'서버', '백 엔드', '백' 주는 컴퓨터

왜 서버 프로그램을 리눅스 위에서 돌릴까요? 윈도우OS, 맥OS, iOS,

안드로이드OS를 두고 굳이 리눅스를 사용하는 이유가 뭘까요?

그 이유는 리눅스가 기본적으로 '무료'이기 때문입니다.

 

리누스 토르발스

리누스 베네딕트 토르발스는 핀란드 헬싱키에서 태어난 스웨덴계 핀란드인으로서 소프트웨어 개발자이자 리눅스 커널과 깃을 최초로 개발한 사람으로 잘 알려져 있다. 후에 그는 리눅스 커널

www.google.com

리눅스의 유명한 버전 중 하나는 우분투(Ubuntu)입니다.

개인이 서버를 운영하면 여러 가지 리스크가 발생하게 됩니다.

그래서 이 모든 일을 대신해주는 서비스가 나타나기 시작합니다.

이런 서비스를 제공하는 업체를 '호스팅 업체'라고 부릅니다.

국내에는 대표적으로 Cafe24, 가비아 등의 회사가 있습니다.

요청을 구분할 수 있도록 하는 '체계'가 바로 API.

API는 클라이언트, 서버와 같은 서로 다른 프록그램에서

요청과 응답을 주고 받을 수 있게 만든 체계입니다.

조금 더 체계적인 API를 관리하고 싶어했고, 그 영향으로 조금 더 체계적인 API라는 사회운동이 만들어집니다.

그런 API를 REST(Representational State Transfer)한 API 즉, RESTful API라고 부릅니다.

- Create(생성해줘): POST

- Read(불러와줘): GET

- Update(바꿔줘): PUT(전체)/PATCH(일부)

- Delete(지워줘): DELETE

API는 소프트웨어가 다른 소프트웨어의 기능을 쓰기 위해 중간에 필요한 체계.

기능을 사용하기 위해 주소로 요청을 보내면 응답을 해주는 소프트웨어끼리의 체계

API를 제공해주는 '다른 소프트웨어'를 SDK라고 부릅니다.

SDK는 Software Developmeent Kit의 약자로 소프트웨어를 개발하기 위한 도구입니다.

데이터를 넣을 수 있는 '기능'에는 여러 가지 형식이 있습니다.....(중략)

'유명한 형식을 다 같이 쓰면 안 될까?'

과거에는 XML이라는 형식이 널리 쓰였고 지금도 종종 쓰이긴 하지만, 현재 가장 유명한 형식은 JSON입니다.

 

JSON은 중괄호로 시작합니다. 그리고 키(Key)와 값(Value)으로 이루어져 있습니다. 그 키와 값은 '콜론'(:)으로 구분합니다.

'클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON형식으로 주고 받는다.'

깃 북(GitBook)은 깔끔한 API 문서 작성을 도와주는 서비스입니다.

서버작업이 완료되었는지는 눈에 보이지 않습니다.

이때 API 문서를 읽고 이해할 수 있으면, 어느 정도 진행되었는지 스스로 예측할 수 있습니다.

운영체제 위에 올라가는 프로그램, 설치해야 하는 프로그램, 응용프로그램, 애플리케이션, 어플, 앱. 모두 같은 그룹으로 이해하면 됩니다.

모바일은 '앱 마켓'이 있습니다. 애플리케이션을 올려놓고 판매할 수 있는 시장이죠.

iOS에서는 '앱스토어'라고 부르고, 안드로이드에서는 '구글 플레이 스토어'라고 부릅니다.

버그가 있으면 앱스토어에 올리는 걸 거절합니다. 이걸 '리젝(Reject)'이라고 합니다.

두 마켓은 서로 다른 마켓 생태계를 가지고 있습니다.

HTML(Hyper Text Markup Language)의 시작은 '유럽 입자 물리 연구소(CERN)'였습니다....(중략)...

HTML 문서는 운영체제에 상관없이 브라우저만있으면...모두 웹사이트에서 접속하여 동일한 정보를 볼 수 있도록 해줬습니다.

HTML이 프로그래밍 언어가 아니라는 점. 컴퓨터에게 특정 일을 시킬 수있는 언어가 아닌 단지 브라우저가 볼 수 있는 문서를 적는 언어.

HTML 에 디자인을 입힐 수 있는 코드인 CSS(Cascading Style Sheets)

HTML과 CSS를 합쳐서 '퍼블리싱' 작업이라고 표현하고, 이 작업을 하는 사람들을 '퍼블리셔'라고 부릅니다.

'마크업 디자인', '마크업 작업', '마크업 개발자' 등등의 방식으로 불리죠.

마크업의 M은 HTML(Hyper Text Markup Language)의 M을 뜻합니다.

HTML과 CSS로는 힘든 기능이어서 프로그래밍 언어가 필요하고

웹 쪽에서는 'JavaScript' 라는 언어가 프로그래밍 언어의 역할을 하게 됩니다.

줄여서 'js'라고 부르기도 하죠.(avaScript로 코딩된 파일 확장자가 js)

애플리케이션을 1.0.0에서 2.0.0으로 변경하기 위해서는 업데이트가 필요합니다.

모바일이라면 심사도 필요하죠. 그렇게 업데이트된 결과를 유저가 다운로드해야 합니다. 그래야 변화가 반영됩니다.

하지만 웹은 다릅니다. 그냥 서버의 원본을 바꾸면 됩니다.

웹과 애플리케이션은 각각 장점과 단점을 가지고 있습니다.

먼저 웹은 수정이 용이합니다. 원본만 수정하면 유저가 업데이트하지 않아도 새로 고침하면 반영됩니다.

빠르게 적용할 수 있죠. 하지만 애플리케이션은 그렇지 않습니다. 오래 걸리죠.

웹은 네트워크의 영향을 크게 받습니다.

반면 애플리케이션은 웹보다 효율적으로 네트워크의 영향을 조금만 받도록 만들 수 있습니다.

각 브라우저는 서로 다른 애플리케이션이기 때문에 브라우저에 따라 그 안에 구현 방식이 다릅니다....(중략)

웹 프론트 개발자는 소비자의 브라우저 버전과 종류에 맞춰 정상적으로 동작할 수 있도록, 추가로 코드를 작성해야 합니다.

이 문제를 '브라우저 버전의 파편화'라고 부르고 문제 해결을 위한 코딩을 '파편화를 잡는다'고 표현합니다.

'아니, 저 많은 브라우저의 파편화를 어떻게 잡지?'

사실 모두를 만족시킬 필요는 없습니다. 중요한 건 '점유율'입니다.

모바일과 PC 버전 웹 페이지를 따로 만들어서 출시하는 것은 불편합니다.

디자인을 바꾸기 위해서는 서로 다른 CSS 파일을 수정해야 하기 때문입니다.

작업이 중복되기 때문에 비효율적이고 버그가 생길 수도 있습니다.

이런 불편함을 해결하기 위해 등장한 기술이 '반응형 웹'입니다.

이름이 '반응형'인 이유는 브라우저의 가로 넓이에 '반응'하여 구성 요소가 변하는 기술이기 때문입니다.

반응형으로 웹을 만들면 작업 시간이 오래 걸리고, 비용이 더 많이 들어가게 됩니다.

웹과 애플리케이션이 혼합된 애플리케이션을 '하이브리드 애플리케이션.'

어떤 부분이 웹이고, 어떤 부분이 네이티브 애플리케이션인지 구분하는 것입니다.

그래야 문제가 생겼을 때 적합한 개발자에게 물어 볼 수 있으니까요.

각 기술은 다른 기술의 장점을 흡수하고, 스스로 가진 단점을 보완하는 방식으로 계속 발전하고 있습니다.

IT 세상에 있는 우리가 웹 진영에서 어떤 변화가 이루어지고 있는지,

애플리케이션 진영에서는 또 어떤 변화가 이루어직고 있는지를 주시해야 하는 이유입니다.

데이터는 단 1%의 결점도 없어야 합니다. 그래서 데이터를 관리하는 게 어렵습니다. 이 속성을 데이터의 '무결성'이라고 합니다.

'관계형 데이터베이스' - 엑셀을 생각하면 쉽다.

액셀의 Sheet를 관계형 데이터베이스에서는 테이블(Table)이라고 표현합니다.

엑셀 파일 자체를 스키마(Schema) 혹은 데이터베이스(Database)라고 표현합니다.

관계형 데이터베이스의 철학으로 만들어진 관리 시스템(소프트웨어)을 관계형 데이터베이스 관리 시스템(RDBMS)이라고 부릅니다.

MS SQL, Oracle DB, MySQL, MariaDB 등 세상에는 무수히 많은 관계형 데이터베이스 관리 시스템이 있습니다.

각 RDBMS 프로그램들은 서로 다른 특징을 가지고 있지만 우리가 그 특징들을 구분할 필요는 없습니다.

우리는 이런 프로그램들이 관계형 데이터베이스 관리 시스템이라는 사실만 알고 있으면 충분합니다.

"그 데이터는 로컬에 있어요." "내부 DB에 저장하고 있어요." "네이티브에서 가져온 건데?" 이런 말이 들린다면,

이건 모두 클라이언트에 데이터가 있다는 표현입니다.

'로컬, 내부 DB, 네이티브, 클라/클라이언트, 프론트/프론트 엔드' 다 같은 곳을 의미합니다.

"API로 가져온 거예요." "DB에 저장해두고 쓰면 안 되나요?"

반면, '서버, API, DB, 백/백 엔드'와 같은 표현은 '서버에서 데이터를 가져왔다'는 의미입니다.

여기서는 DB와 내부 DB 만 잘 구분하시면 됩니다.

이미지를 추가, 수정하기 위해서는, 이미지가 있는 위치와 주소가 중요합니다!

관계가 맺어진 텍스트는 관리하기 힘들죠. 그래서 DB 에 넣어둡니다.

이미지가 클라이언트에 있는지 서버에 있는지 확인하는 가장 좋은 방법은 API문서를 보는 것입니다.

API를 통해 이미지의 주소(URL)를 서버에서 받아온다면, 그 이비지는 서버에 있는 이미지라고 판단할 수 있습니다.

애플은 프레임워크를 만들어놓았고, 사용법을 웹페이지로 제공해주고 있습니다. iOS개발자에게는 '사전'같은 페이지입니다.

AppKit는 맥 OS에 올라가는 애플리케이션을 개발하기 위한 프레임워크입니다.

UIKit는 iOS 혹은 tvOS에 올라가는 애플리케이션을 개발하기 위한 프레임워크.

애플은 기기가 많기 때문에 기기별로 프레임워크들이 존재합니다

(애플에서는 이 프레임워크들을 통칭해서 코코아(Cocoa)프레임워크라고 부릅니다)

UIKit 에서 조금 더 안으로 들어가면 UIButton이라는 게 보입니다. 버튼을 위한 코드죠.

애플이 이미 만들어놨으니 개발자는 이 코드를 가져다 쓰면 됩니다.

https://developer.apple.com/kr/

거대 IT 회사들은 개발자들이 자사의 애플리케이션을 쉽고 빠르게 개발할 수 있도록 프레임워크를 만들어 제공해주고 있습니다.

그런데 문제는 웹입니다. 웹은 특정회사의 소유가 아닙니다. 우리 모두의 것입니다.

'웹 프론트엔드 프레임워크 및 라이브러리 삼대장(2020년기준)'이라고 불리는 가장 유명한 세 개가 있습니다.

...Angular.js 는 구글에서 운영, React.js 는 페이스북에서 만들었죠. Vue.js 는 Evan You 라는 중국 사람이 만들었습니다.

이렇듯 웹 프레임워크 및 라이브러리는 페이스북이나 구글 같은 회사가 만들기도 하고 개인이 만들기도 합니다.

웹과 마찬가지로 서버도 특정 회사의 소유가 아니기 때문에 다양한 프레임워크들이 존재합니다.

그리고 각 언어별로 유명한 프레임워크들이 하나씩 있습니다.

 

라이브러리도 다른 사람들이 만들어 놓은 코드를 이용한다는 측면에서 프레임워크와 같습니다.

프레임워크가 더 큰 개념입니다. 각종 라이브러리와 코드들이 모여 프레임워크가 됩니다.

더불어 한 프로젝트에서 프레임워크는 하나만 쓸 수 있습니다.

깃을 통해 개발자들은 개발 단계별로 '깃발'을 꽂을 수 있습니다. 그 행위를 커밋(commit)이라고 합니다.

커밋에는 항상 메모가 따라다닙니다. 무슨 개발을 했는지 적어주는 메모죠.

그 메모를 커밋 로그(Commit Log)라고 합니다.

브랜치(Branch)는 '분기','가지'라는 뜻으로 새로운 가지를 뻗는 것을 의미.

한창 개발을 하고 있는데 새로운 방향의 개발을 추가해야 할 때,

개발자는 기존 개발에 이어서(덮어씌어) 작업하지 않고, 새롭게 가지를 쳐서 작업할 수 있습니다.

분석 기능과 동시에 진행해야 하는 다른 코드들은 브랜치로 따로 관리합니다.

각각 서로 다른 곳에서 개발하는 거죠. ...(중략)...이후 각각의 브랜치에서 작업한 코드들을 합치기만 하면 됩니다.

코드를 합치는 기능이 바로 머지(Merge) 입니다.

큰 브랜치들이 합쳐진다면 반드시 테스트가 필요합니다.

따라서 머지를 위한 시간도 필요하고, 추가 테스트를 위한 시간도 필요합니다.

하나의 프로젝트를 여러 명이 함께 작업하면 같은 이슈가 발생할 수 있습니다.

이에 개발자들은 깃을 기반으로 한 깃허브(GitHub), 비트머킷(Bitbucket) 등의 '원격 저장소'라는 걸 만들었습니다.

"스케치, 재플린, XD" 등의 프로그램은 디자이너의 작업 결과물의 수치를 보여줍니다.

따로 가이드를 적지 않아도 됩니다....(중략)...디자이너와 개발자의 협업에 필요한 모든것들을 담고 있죠.

수많은 비율이 존재...결국 디자인을 구현하는 것은 클라이언트 개발자의 몫입니다. 따라서 클라이언트 개발자에게는 UI(User Interface의 약자로 화면의 버튼, 텍스트 필드와 같은 요소를 의미)를 바라보는 감각이 중요합니다.

디자이너는 가이드에 관심을 가져야 합니다.

애플은 HIG(Human Interface Guideline)

구글은 Materrial Design이라는 가이드를 제공

모든 기술은 기존 사업들을 가만히 두지 않을 것이라는 점은 분명합니다.


안녕하세요

저는 창의력을 발달시키기 위한 음악교육을 꾸준히 하고 있습니다.

개인 맞춤으로 진행하며, 그룹레슨도 가능합니다.

시창+청음+작곡+노래 등 음악 분야의 복합적인 수업을 하며.

시각분야를 접목시킨 예술융합교육도 함께 진행합니다.

단순히 악기를 하나 배우는 게 아닌 음악의 전반적인 교육을 통해

창의적인 사고방식예술 교육을 필요로 하신 분들 연락 주세요!

물론 음악전문가의 길을 걷고 싶으신 분,

생활 활력소를 위한 성인 일반 취미 레슨(보컬, 작곡 등)도 합니다!

목적에 맞는 개인 맞춤 레슨이니까요~^^

현재 수업 중인 프로그램입니다.

음악 진로(넓고 깊은 음악인의 길)

나도 싱어송라이터 (작사+작편곡+연주)

사운드 프로듀서(영상음악 작편곡)

나도 가수(보컬 레슨)

작곡(일반인/초중고)

어플리케이션을 활용한 비트메이킹

창의음악 예술 융합 (인문+예술)

* 어플로 나만의 음악 만들기( PDF 책 제공)

아래 링크를 통해 문의 글을 남겨주시면 신속하게 연락드리겠습니다!

*온라인 레슨/특강도 가능합니다!

 

문의 – SORTMUSIC

수업, 강의, 음악 제작 등 각종 문의는 아래 페이지를 이용해주세요.

sortmusic.kr

https://sortmusic.co.kr

 

SORTMUSIC – 창의 음악 예술 융합 교육

“모든 아이들은 예술가다. 문제는 어른이 된 후에도 그 예술성을 유지할 수 있을까 하는 점이다. (Every child is an artist. The problem is how to remain an artist once we grow up)” 화가 피카소(Pablo Picasso) 소개 S

sortmusic.kr


 

 

Apple 아이패드 프로 12.9형 5세대 M1칩

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 있음