안녕하세요 기형쌤입니다.

 

날이 너무 춥네요. 옷 따듯하게 입고 다녀야 할 것 같아요ㅜㅜ

추운 곳에서 너무 오래 돌아다녔더니 몸이 으슬으슬 떨리는게....

여러분은 절대절대 춥게 다니지 말아요! 아프면 본인만 손해잖아요

 

잡설은 각설하고!

오늘 제가 들고 온 이야기는 해커에 관한 이야기입니다.

 

어렸을 때 부터 많은 분들이 한 번쯤 이런 생각을 가져보신 적 있지 않나요?

 

해커가 되어서 국방부에 있는 본인 이름을 전역자로 만들어버리고 싶다던지(전 그러고 싶더라구요ㅎ)

학생 때는 수능 시험지를 빼와서 미리 공부하고싶다던지

 

지금 생각하면 오싹한 생각이지만

당시에는 나름 간절한 바람이어서 심각한 범죄라는 사실도 개의치 않았었죠(속으로만 하는 상상이었는걸요ㅎㅎ)

 

그리고선 생각이 드는것이 해커는 어디까지 가능할까? 였습니다.

궁금하시지 않나요? 영화 속에서 나오는 해커들처럼 엄청난 일들을 홀로 벌일 수 있는걸까?

아니면 생각보다 할 수 있는게 없는걸까?

이제 한 번 알아봅시다!

크래커란?

사실 해킹이라는 것 자체는 피해를 주는것 만을 하는 행위를 지칭하는것이 아닙니다.

그저 프로그램에 접속하여 간섭하는것을 말한다고 볼 수 있습니다.

그러나 크래킹은 특정 목표에 피해를 주는 것을 목적으로 하고 있는 해킹을 뜻합니다.

그러니 이 크래킹이 여러분이 일반적으로 인식하고 계시는 해킹의 이미지와 부합한다고 할 수 있습니다.

 

사실 일반 유저들이 일반적으로 생각하는 크래킹을 당할 일은 거의 없습니다.

다만 PC방 등에선 Windows XP 보안 업데이트가 제대로 이루어지지 않는다는 점을 이용해

쉽게 크래킹을 하는 경우가 있습니다.

 

또한 악성 코드와 함께 유저가 알아서 설치해주고 '내 컴퓨터를 바보로 만들어주세요' 하는 경우가 있는데,

이런 경우는 대개 악성 코드가 정상적인 프로그램으로 위장하거나

혹은 정상적인 프로그램에 숨어서 들어오는 경우입니다.(트로이의 목마가 대표적입니다.)

 

보통 이럴 때 쓰이는 해킹 프로그램은 상당히 수준낮고 오래된 프로그램이므로

마이크로소프트사의 보안패치만 잘해도 신경쓰지 않아도 됩니다.

집에서는 보안업데이트를 꾸준히 하고 PC방에서는 가능하면 하드보안관 등이 설치된 PC를 이용하고,

복구프로그램이라고 해서 만능인 게 아니기 때문에 복구프로그램을 완전히 무력화 시키기도 합니다.

반드시 백신설치&보안패치를 진행하는게 좋습니다.

 

일반인이 접하는 크래킹 피해는 온라인 게임 등의 계정 탈취가 대부분일 것입니다.

그 외에도 기업간에 해킹을 하거나 커뮤니티 사이트 같은 곳은

아예 다른 나라에서 주민등록번호를 탈취하기 위해 해킹하기도 합니다.

 

정보가 중요해진 현대 사회에서는 전쟁이 일어나면 무기로 인한 전쟁도 중요하나

그보다 중요한것이 자신의 보안을 견고하게 쌓아올려 정보를 지키면서도 동시에

상대방의 정보를 털어가는 해킹 전쟁이 주류가 되는 경우도 심심찮게 발생하게 됩니다.

상황이 이렇다 보니 돈받고 크래킹을 대신해주는 전문 크래커도 있는 지경이며

이들과 보안회사와의 전쟁은 끊이지 않고 있습니다.

 

많은 크래커들은 컴퓨터 소프트웨어를 조작하는 것뿐 아니라

사람을 속이는 심리전 성격의 해킹 기법을 함께 이용하기도 합니다.

유명한 해커인 케빈 미트닉에 따르면 밤을 세워서 컴퓨터 프로그램의 보안 취약점을 알아내는것보다

휴가 간 보안 관리 팀장의 목소리를 흉내내서 비서에게 직접 암호를 알아낼 때

쾌감이 더욱 각별하다고 말할 정도였습니다.

 

그러나 사실 크랙이란 이름의 어원은 불법복제 방지기술(CD-key 등)이

적용되어 있는 프로그램을 해킹해서 불법복제를 하는 것만을 의미하기 때문에,

악의적인 해커를 크래커라고 부르는 것은 적절하지 못하다는 의견도 나오고 있습니다.

예를 들자면 좀비 PC를 만들고 디도스 공격을 하는 사람은 악의적인 해커지만

크랙을 했다고 보기는 힘들죠. 따라서 최근에는 해커/크래커로 구분하여 이야기하기 보다는

화이트 해커와 블랙 해커로 구분하여 이야기하는 경우가 더 많아졌습니다.

그렇다면 해커란?

크래커의 정의는 그렇다 하면 해커는 어떨까요?

해커는 컴퓨터 내의 시스템이나 프로그래밍에 관해 전문적인 지식을 가진 사람이라는 의미입니다.

해커라는 이름은 좀 더 포괄적인 의미로 쓰이고 있습니다.

어떻게 보면 블랙해커(크래커)와 화이트해커 양자 모두를 아우른다는 점에서

'컴퓨터 전문가' 쪽에 더 가깝다고 말할 수 있습니다.

재밌는 사실은 최초의 해커들이 컴퓨터 관련 사람들이 아니라 MIT 철도동호회였다고 합니다ㅎㅎ

 

해킹의 시작은 초기 해커집단의 우두머리인 피터 샘슨을 중심으로 한

MIT 테크모델 철도클럽중 한 분파인 신호기와 동력분과위원회가 시작이라는 의견이 지배적입니다.

철도 동아리였던 테크모델 철도클럽은 열차에 진심을 내는 그룹이었고,

신호기와 동력분과위원회는 말 그대로 신호기와 철도 컨트롤등을 통제하는 구성장치에 집중던 사람들 이었습니다.

이들은 보다 효율적인 동력배치를 위한 복잡한 계산이 필요했고,

이를 도와줄 최대 원군은 당시 MIT에서 들여놓은 컴퓨터인 IBM704라는 기종이었습니다.

그런데 당시는 1959년. 컴퓨터의 크기는 대학 강의실만하고, 한번 가동되면 여전히 장기간 쉬어줘야 하는 시절이었죠.

 

MIT에서는 큰돈을 들여 유지하는 컴퓨터를 일개 학생들이 사용하는것을 막고자 했고,

이런 통제를 피해 컴퓨터실에 잠입하여 학교에서 막아놓은 시동장애를 뚫고,

우회로를 통해 컴퓨터를 가동시키고, 조작하던 것이 결국 나중에는 사상으로 발전하여

해커강령까지 내걸으며 해커로서 탄생하게 되었죠.

 

해커라는 말의 어원도 MIT에서 기원했다고 합니다. 당시 MIT의 여러 은어들 중

결과는 상관없이 과정 그자체를 즐기기 위한 프로젝트나 정교한 계획을 뜻하는 것을 의미했다고...

결과적으로 처음에는 철도시스템 계산을 위해 연구했지만

시간이 지나다보니 그냥 컴퓨터를 몰래 쓰는 게 재미있어서 재미로 해킹을 하게 되었다는 말이 되겠네요ㅋㅋㅋㅋ

해커의 실체

보통 해커하면 떠오르는 건 안경 쓰고 허리 구부러진 천재 한 명이

여러 개의 모니터가 가득한 어두운 방에 앉아 키보드 하나로 컴퓨터의 모든 것,

규모가 커지면 세계까지 좌지우지 한다는 이미지를 떠오르게 합니다.

물론 수많은 영화와 사람들의 해커에 대한 환상이 낳은 이미지이지만

이러한 이미지 때문에 해커를 무서운 사람으로 보는 공포심이나 부러운 눈길로 보는 동경심으로 양분되어있습니다.

하지만 이 모든 건 환상일 뿐이고 해커들을 200% 미화시키는 CLI 환경으로 해킹작업을 하던지

인터넷에 굴러다니는 간단한 원클릭 GUI 해킹툴만으로 해킹을 하던지

그 행위를 하는 사람은 통틀어서 해커라고 불리웁니다.

 

우리는 생각보다 해킹과 밀접하게 생활하고 있습니다.

대표적으로 불법 복제를 위한 크래킹을 실생활 속에서 자주 하고 있으므로 해킹과 우리는 상당히 가까운 사이지요.

일부 컴맹들 또한 자신들이 해킹을 하고 있다는 것을 인지하지 못할 뿐, 해킹을 하고 있습니다.

키젠을 사용하여 시리얼 코드 인증을 뚫거나,

크랙을 깔아서 상용프로그램의 락을 크래킹하는 식도 다 해킹에 해당됩니다.

우리의 입장에서는 그저 클릭 몇 번에 불과하지만 설명서를 보고 해킹을 한 사실은 변함이 없습니다.

 

하지만 대개의 경우 우리가 '해커'라고 구분해서 부를 때는 결국 컴퓨터 보안 전문가들을 가리키는 말입니다.

그들의 이미지는 우리가 생각하는 것과는 조금 다를 수 있습니다.

컴퓨터에 관심을 가진 그 이후의 연장선으로 심심풀이로 해킹을 하는 사람부터,

보안 취약점을 가르쳐주는 정보보안전문가, 범죄행위를 저지르는 크래커들까지 해커의 종류는 무궁무진합니다.

 

일반적인 해킹은 변조, 예외, 헛점을 노리지만

상대적으로 어려운 해킹은 수학, 암호학 물론 전자공학까지도 다루어

보안기능과 코드루틴이나 어쨌든 무결성을 깹니다.

무결성은 보통 상태의 온전함을 나타내는데 많이 쓰지만

본래는 결점여부로 오류뿐만 아니라 추측과 노출 가능성까지 포함한 개념입니다.

 

해커는 만들고, 크래커는 그것을 부순다.

 

이 한마디로 해커와 크래커의 차이를 설명할 수 있겠네요.

 

해외에서는 네트워크를 불법적으로 해킹한 후, 약점부분을 회사에 신고하는

네트워크 보안의 레드 셀 역할을 자처하는 그레이 해커라는 분류도 있습니다.

그러나 국내에서는 정보통신망법 위반이라 공익 목적으로 접근한 것이던지 심심해서 접근한 것이던지

악의적인 행동이 목적이던지 간에 모두 다 불법이라서 전부 처벌 대상자들입니다.

그리고 국내 회사에서는 신고해봤자 포상금을 지급하지 않습니다.

따라서 이런 방식으로 수입을 올리고 싶다면 반드시 해외 기업을 대상으로 실행해야 합니다.

범죄자가 될 위험을 감수하고 돈도 못 받아가면서 해커가 국내 기업의 취약점에 대해 말해줘야 할 이유는 없으니까요.

 

해커가 되고싶다면?

스크립트 키디라 불리는 초보자들은 인터넷에서 구한 해킹 툴을 이용해

툴에서 제공되는 기능을 이용하는게 대다수 입니다.

그 과정에서 같은 툴 키디라 불리는 이들이 올린 유튜브 동영상을 위주로 공부하기도 합니다.

그리고 실제로 보안 지원이 끊긴 윈도우 서버 2003, 윈도우 XP 등은 간단한 해킹툴만으로도 쉽게 공격할 수 있죠.
여기서 조금 더 나아가서 칼리 리눅스를 설치해 그 안에 담긴 몇백 종류의 해킹툴을 이용하기도 합니다.

 비주얼 베이직을 배워서 해킹툴의 소스 코드를 다운받아 이름이나 그래픽을 고치기도 합니다.

 

칼리 리눅스도 리눅스이기 때문에 리눅스 및 Bash 배우기에도 좋고,

비주얼 베이직도 프로그래밍 언어이기 때문에 코딩 기초 배우기에 좋기도 합니다.

그리고 전문적인 해커들 역시 정보 수집 등 간단한 목적을 위해서는

칼리 리눅스 등에 담긴 배포된 해킹툴을 사용하기도 합니다.

다른 사람들이 이미 만들어놓은 툴을 쓰면 되는데 굳이 자신이 똑같은 것을 만들 필요가 없기 때문이죠.

 

하지만 여기에서 컴퓨터공학 학습을 그만둔 뒤 기존 해킹툴 사용만 단순반복한다면 실력 발전에 한계가 있겠죠?

해커들 사이에서 해커냐 툴키디냐를 구분하는 기준은 일반인을 괴롭힐 수 있느냐가 절대 아니라

첫 번째로 전문적인 보안 관리자가 미처 대비하지 못 한 취약점을 찾아낼 수 있는가?와

두 번째로 기존 해킹툴로 그 취약점을 공격할 수 없을 때 새로운 도구를 만들 수 있는가? 입니다.

 

특히 그 취약점이 특정 공격대상에만 적용되는 것이 아니라 전세계 수많은 컴퓨터에 적용되는 것이라면

제로 데이 공격이라 해서 엄청난 경제적 가치를 갖게 됩니다.

툴키디들의 해킹툴 사용법 익히기+칼리 리눅스+비주얼 베이직으로는 절대 저런 일을 해낼 수 없습니다.

결국 이 '툴키디'들은 정보 보안에 관심이 없어 보안 소프트웨어를 전혀 깔지 않은 일반인만 공격할 수 있게 됩니다.

왜냐하면 보안 업체에서는 어차피 주요 해킹 툴에서 사용하는 취약점을 파악하고 있으며

이에 대한 보호를 제공하고 있기 때문이죠.

따라서 해커가 되고 싶다면 해킹툴은 잠시 닫아두고 기초를 충실히 해야 합니다.

 

프로그래밍 (기초, 이산수학, 자료구조, 알고리즘), 운영 체제, 네트워크 등

컴퓨터공학과의 상당수 교육과정을 이해해야 정보 보안에 대한 공부를 이해할 수 있는 기초지식을 쌓게 됩니다.

컴퓨터공학과만 나온다고 해커가 되는 것이 아니듯

위 기초지식을 확보한 후 정보 보안에 대한 지속적인 공부를 해야 합니다.

 

모든 과정에서 가장 기초가 되는 것은 프로그래밍입니다.

특정 프로그램을 해킹하기 위해서는 그 프로그램의 취약점을 공략해야 하는데,

아직 세상에 알려지지 않은 취약점이라면 인터넷에 떠도는 해킹툴로는 해킹할 수 없겠죠?

그렇다면 자신이 직접 해킹툴을 만들어야만 할 것입니다.

그렇다면 결국 프로그래밍이 필요하게 됩니다.

거기다 프로그래밍을 배워야 프로그램이 어떻게 돌아가는지 이해할 수 있겠죠.

 

프로그래밍에 대한 기본적인 지식을 쌓았다면 자료구조, 알고리즘을 통해

프로그래밍 실력을 더욱 키울 필요가 있습니다.

이것을 못 하는 사람은 코더에 불과하여 자기 힘으로 코드를 짤 수 없고

다른 사람이 짠 코드를 베끼는 것에 머무르게 될 수 밖에 없습니다.

최소한 Unix-like라고 불리는, 유닉스, 리눅스, BSD, 맥과 같은 운영 체제를 사용하는 것이 좋습니다.

이 중에서는 무료이고 가장 많은 서버와 임베디드 기기의 운영체제로 사용되고 있고

가장 넓은 유저 폭과 커뮤니티를 갖추었다는 점에서 리눅스가 좋습니다.

잘 모르는 것이나 안 되는 것이 있으면 쉽게 검색해서 해결 할 수 있기도 하고,

그 중에서도 칼리 리눅스는 여러 해킹툴을 담고 있어 해킹에 편리합니다.

 

기초를 쌓고 공부를 지속하다 보면 네트워크 해킹, 웹 해킹, 시스템 해킹으로 길이 나뉘게 됩니다.

그래서 자신이 원하는 쪽을 깊게 공부하게 되죠.
셋 다 전문가가 되기는 어렵습니다. 2000년대까지만 해도 한 사람이 해킹에 전반적으로 능통한 게 가능했으나

2010년대 중순에 이르러서는 수준높은 기법들이 자주 발표되고 있기 때문에

'IoT 해킹, 미티게이션' 등 아주 세세한 분야 하나만 최신 트렌드를 따라가는 것도 어렵게 되었습니다.

기초와 함께 배워보자!

화이트해커가 되기 위해서는 기초와 프로그래밍이 아주 중요함을 알았으니

이제 어디서 그 기초를 배울 수 있는지 생각해볼 때가 왔습니다.

기초부터 전문가 과정까지 체계적으로 과정이 진행되고 있습니다.

 

전문가가 되실 수 있게 국비지원으로 프로그램 운영하고 있으며

과정 진행하시면서 훈련수당까지 받아보실 수 있습니다.

 

관심있으시다면 하단의 네임카드를 클륵해주세요!!

네임카드를 클릭해주세요!!!

안녕하세요! 기형쌤입니다!

 

갑자기 날이 추워졌네요. 다들 감기 걸리지 않게 조심하시구요ㅠㅠ

이 시국에 감기 한 번 잘못 걸리면 너무 불안하잖아요

코로나가 아닌지? 그냥 감기인건지? 우리 그런 일을 겪지 않게끔

최대한 조심하면서 살자구요!

 

오늘 제가 가져온 이야기는 바로 R 언어에 관한겁니다.

R언어? 그게 뭐지? 하고 생소해 하실 분들도 계실텐데요

R 언어는 빅데이터 관련업계 종사자분들이

거의 필수적으로 알고계셔야 하는 프로그래밍 언어 중 하나입니다.

왜 그런걸까요? 같이 알아보도록 해요!

R언어는 1993년 뉴질랜드에 위치한 오클랜드 대학교에서 개발된

통계 및 그래프 작업을 위한 인터프리터 프로그래밍 언어입니다.

 

영국식 언어를 사용하는 뉴질렌드에서 개발한 언어여서 그런지

color를 colour 라고 쓰는것도 인정되는 특징이 있습니다.

 

다른 프로그래밍 언어들 및 통계 솔루션과 비교하자면

SPSS, STATA, SAS 등 유사 소프트웨어들이 있고 요즘엔 Python도 많이 사용하고 있습니다.

SPSS는 통계학용이라는 목적만 같을 뿐 실제로 사용해보면 나머지 언어들과는 좀 다릅니다.

STATA는 R에 비해 프로그래밍 자유도가 낮다는 등의 단점이 있지만,

대신 계량경제학(특히 실증미시경제학)에 특화되고 상대적으로 배우기 쉽다는 장점이 있습니다.

SAS는 유료 통계분석 언어중에 가장 유명한 언어입니다.

위의 언어들 중 그나마 R에 가장 가깝다고 할 수 있는 언어이기도 합니다.

Python은 앞의 언어들보다는 좀 더 일반적이고 범용성이 큰 언어입니다.

통계나 수치해석을 위한 라이브러리를 동원해 통계분석용으로 쓸 수 있습니다.

 

Python에 관한 자료는 제가 이전에 게시해놓았던 Python 자료에서 보실 수 있습니다.

kiihakjumcircle.tistory.com/entry/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%96%B4%EB%94%94%EC%84%9C-%EB%B0%B0%EC%9A%B8-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94?category=909606

 

Python(파이썬)은 무엇이고 어디서 배울 수 있나요?

안녕하세요? 기형쌤입니다!! 오늘 제가 들고 온 것은 바로 Python입니다. Python은 수많은 프로그래머들의 기본소양이라고 할 정도의 언어입니다. Python은 그 기원이 굉장히 특이한 언어인데요. 바로

kiihakjumcircle.tistory.com

 

R언어의 장점

이렇게 비슷한 성향의 언어들이 있는데 왜 R 언어를 사용하는 걸까요?

그 이유는 일단 첫 번째로 오픈 소스로 배포되고 있어 무료로 사용이 가능하다는 점이 있습니다.

SPSS나 MATLAB과 같은 상용 프로그램을 구입하지 않아도 된다는 장점이 있습니다.

또 R언어는 오픈소스 언어이기 때문에 그러한 언어들의 특징인

사용할 수 있는 수많은 통계 관련 패키지가 개발되어 있어서 인터넷을 통해 이 패키지들을 설치하는 식으로

무수한 기능 확장이 가능합니다.

애초에 통계학자들이 만들어 낸 언어이기도 하고 통계 전문 언어 중 가장 보편적이기 때문에

내가 사용하고 싶은 모든 통계 기법이 이미 어딘가에 패키지 형태로 구현되어 있다고 봐도 무방합니다.

 

또한 그래픽 관련 패키지를 설치하면 간단하게 다양한 그래프를 활용할 수 있으며

구글이나 네이버 지도를 불러오거나 이를 활용해 GIS 용도로 쓰는 것도 가능하게 해줍니다.

 

웹 어플리케이션 개발 프레임워크인 Shiny의 고도화로 통계 또는 머신러닝 모델을 웹과 연동할 수 있고,

가장 중요한 데이터 마이닝, 빅 데이터 프로세싱, 기계학습 등에 유용하게 사용할 수 있습니다.

 

통계와 관련된 언어이기에 리스크, 재무, 마케팅 담당자 채용 시 R 능통자를 우대하기도 합니다.

 

R언어의 단점?

이렇게 좋은 수많은 장점을 가진 R언어는 왜 사람들이 많이 알지 못 하는걸까요?

그 이유 중 커다란 파이를 차지하는 이유 중 하나는 바로

어려워서 입니다.

물론 이것은 컴퓨터 공학자가 아니라 일반인 입장에서 어렵다는 것입니다.

그 이유는 R자체가 원래 통계 프로그램인 S를 그대로 배껴서 만든 프로그램이었기에

R은 원래 통계분석 프로그램이였습니다.

문제는 통계학자들도 R언어를 배워야하는데, 프로그래밍이 가능하게 만들면서

다양하게 만들고 분석할 수 있는 가능성을 갖음과 동시에, 프로그래밍을 알아야 한다는 단점이 생겨버렸습니다.

통계분석 프로그램으로 유명한 SAS, STATA, Minitab에 비하면 월등히 어려워서

한 동안은 대학에서도 취급하지 않았고, 일부 저널에서는 받아주지도 않았었습니다.

 

다만 2000년대 중후반에 코딩이 중요해지면서, R의 인기가 올라갔습니다.

그 이유 중의 커다란 파이를 차지한 것은 다름이 아닌 공짜 라는것 때문이었습니다.

 

통계 분석하는 함수들이 기본적으로 들어가있으면서,

무료로 프로그래밍이 가능하기에 현재 많은 통계분석 프로그램 유일하게

SAS의 명성을 따라잡을 수 있는 언어가 되었습니다.

 

안타까운 것은 프로그램 자체의 한국어 기능을 제공하지 않는다는 점입니다.

다른 프로그램들마냥 한국어 주석을 생각없이 넣었다가는

코드를 잘 짜놓고도 오류가 가득한 모습을 볼 수 있을것입니다.

특히 함수나 for문 등 연속적인 작업이 이루어지는 코드 내부에

한글로 이루어진 주석을 꽉꽉 채워 넣거나 한다면...그러지 않기만을 바랍니다ㅎㅎ

 

개발환경

RStudio라는 환경에서 개발을 하는 것이 가장 무난합니다.

R 본체가 설치되어 있어야 작동하며, 훨씬 편리한 인터페이스를 제공하는 것이 강점입니다.

단, 폴더 경로나 파일 이름에 한글이 들어가면 제대로 작동하지 않을 수 있으니 주의해주셔야 합니다.

 

그 외의 에디터들에는 ConTEXT, jEdit, LyX 등이있지만 보통

R에 대한 문법 검사와 코드 색상을 지원하는 플러그인 형태로 제공됩니다.

 

R언어를 배우려면?

이제 R언어는 빅데이터 개발자 쪽으로 진로를 정하신 분들이라면

하둡 프로그래밍과 함께 무조건 배워야하는 언어로서 자리잡았습니다.

그렇다면 어디서 R언어를 배울 수 있을까요?

 

저희 빅데이터 전문가 과정에 R언어를 배우실 수 있는 과정이 포함되어 있습니다.

R언어 이전의 C, Python 등 필요한 언어들을 배워가시면서

진행하실 수 있으니 부담스러워 하지 마시고 문의주세요.

하단의 네임카드를 클릭해주시면 바로 상담 가능합니다.

네임카드를 클릭해주세요!

안녕하세요 기형쌤입니다.

 

기분 좋은 주말이에요!

한 해를 마무리해가는 12월! 여러분은 잘 보내고 계신가요?

연말은 연말이라 바쁘고 연초는 연초라 바쁘고

바쁠일이 너무 많아 몸이 남아나질 않네요ㅠㅠ

 

오늘 제가 가져온 이야기는 빅데이터 프로세싱에 관한 이야기입니다.

 

빅데이터 프로세싱이란?

말 그대로 디지털 시대에서 폭증하는 너무나도 방대한 양의 정보(Big Data)를

관리하고 분석해서 유용한 정보로서 사용할 수 있게 만든는 기술을 지칭합니다.

 

과거에는 정보로서 기록되지 않았던 매우 사소한 정보까지도

디지털 정보로 기록되는 정보화 시대에서는 너무나도 정보의 양이 많아졌습니다.

 

내가 어디에 있는지에 대한 위치정보, 뭘 먹고 싶어서 검색했는지에 대한 정보,

어떤 음악을 플레이 했는지에 대한 정보, 운동을 위해 얼마나 달렸는지에 대한 정보까지

전부 데이터로서 기록이 되니 정보는 넘쳐날 수 밖에 없죠.

 

또한 거기에 더해 단순한 문자 데이터에서 벗어나

녹음, 사진, 동영상 등 데이터의 종류가 다양해지고 데이터의 용량 자체도 큰 폭으로 늘어났습니다.

이런 빅 데이터는 기존의 기술이나 도구로는 원활한 수집과 처리가 불가능할 정도로

성질이 달라졌으므로 빅 데이터에서 유용한 정보를 추합하거나 가치를 뽑아내기 위해서

고안된 기술이 바로 빅 데이터 프로세싱입니다.

 

빅데이터는 사람들의 마음 속을 어느 정도 계량화해서 데이터로 만들어 응용하는 것을

목적으로 만들어진 기술이기에 주요 대기업들 사이에서 독자적인 빅 데이터 응용 모델 만들기가 대유행 중입니다.

빅데이터를 활용할 수 있는 분야는?

그렇다면 이러한 빅데이터를 활용할 수 있는 분야는 어디일까요?

수많은 곳에서 빅데이터를 이용할 수 있지만 대표적으로 추천 엔진이 있습니다.

 

예를 들어 페이스북의 당신이 알 수도 있는 사람 이라던지

유튜브의 추천 영상 등에 활용되어 사용될 수 있습니다.

 

심리/동향 분석에도 사용되는데,

SNS 포스팅이나 인터넷 광고 클릭 성향 등을 통해 맞춤형으로 정보를 전달하는 등의 활용이 되고 있습니다.

 

인공지능의 구현에도 빅데이터가 기반이 되는 기술입니다.

대표적으로 알파고를 떠올리실 수 있습니다.

알파고 또한 과거 대국의 정보를 바탕으로 한 수 한 수에 대한 승률을 계산해 다음수를 착수하는 것 과 같이

아직은 스스로 생각할 수 없기에 과거의 빅데이터를 기반으로

가장 높은 확률로 정답인 것을 찾아가는 형태로 발전해나가고 있습니다.

 

기타 도시학 연구, 네트워크 모니터링, 인터넷 사기의 탐지 등 수많은 분야에 빅데이터는 사용될 수 있습니다.

 

국내의 빅데이터 분석기사 자격증?

2019년 국내에 빅데이터 분석기사 자격증이라는 것이 신설되었습니다.

기사급의 자격증으로 2020년 하반기 최초 시행되었습니다.

 

한국데이터산업진흥원에서 시행하는 빅데이터분석기사 시험에 합격하여 그 자격을 취득한 사람을 말합니다.

빅데이터분석기사 시험은 필기시험과 실기시험으로 이루어지며

필기시험은 객관식으로 100점을 만점으로하여 과목당 40점 이상, 전 과목 평균 60점 이상이면 합격이 인정됩니다.

실기시험은 실무 통합형 시험으로 100점을 만점으로 하여 평균 60점 이상이면 합격하게 됩니다.

 

아직 국내에서 시행된지 얼마 되지 않은 자격증이지만 수많은 사람들이 몰려

11월 사이트가 먹통이 되어 아무도 접수하지 못하고 일정이 늦춰졌습니다.

 

오는 12월 19일 첫 필기시험이 진행되어 아직 국내에 자격증 취득자는 없지만

워낙 유망한 직종인 빅데이터 관련 자격증이고

국가 자격증인지라 취득시 취업에 굉장히 유리해질 것으로 예측됩니다.

빅데이터 기술을 배우려면?

빅데이터 전문가가 되려면 기본적으로 Python언어를 알고있어야 합니다.

현재 프로그래밍 업계에서 가장 중요한 언어라고 한다면 단연 Python입니다.

쉬우면서도 범용성 넓은 Python은 제가 Python에 대해 설명해놓은 게시글이 있으니

그 글을 읽어보시면 이해하기 편하실겁니다.

kiihakjumcircle.tistory.com/entry/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%96%B4%EB%94%94%EC%84%9C-%EB%B0%B0%EC%9A%B8-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94?category=909606

 

Python(파이썬)은 무엇이고 어디서 배울 수 있나요?

안녕하세요? 기형쌤입니다!! 오늘 제가 들고 온 것은 바로 Python입니다. Python은 수많은 프로그래머들의 기본소양이라고 할 정도의 언어입니다. Python은 그 기원이 굉장히 특이한 언어인데요. 바로

kiihakjumcircle.tistory.com

 

그리고 네트워크 기반의 기술이니 CCNA(네트워크 기초)정도도 알고 계시는게 좋겠죠?

또한 대용량 데이터를 분석, 처리할 수 있는 기술인 하둡 프로그래밍 또한 배우셔야 합니다.

 

배울게 너무 많죠?

 

그래서 빅데이터 전문가를 생각하시는 분들은 어느정도 프로그래밍에 대해

전반적인 기초 지식이 있어야 합니다.

하지만 걱정 마세요!

기초부터 차근차근 가르쳐드리는 전문가 과정을 소개해드리겠습니다.

 

아래의 네임카드를 클릭하시면 바로 상담해드릴 수 있으니 문의 주세요!

상담은 무료로 진행되니 부담없이 연락 남겨놔주시면

빠르게 전문가 과정으로 이끌어드리겠습니다▼

네임카드를 클릭해주시면 바로 상담 도와드리겠습니다!

안녕하세요! 기형쌤입니다.

날이 많이 흐려졌네요. 이제 눈이 오고 본격적으로 겨울이 시작되려나봅니다.

다들 감기 걸리지 않게 조심하셔요!

 

오늘 들고 온 이야기는 C++에 대한 이야기입니다.

 

C? C++? 둘이 뭐가 다른거지?

C랑 비슷한거 아닌가? C의 심화과정?

프로그래밍에 이제 막 입문하시려는 분들이라면 이런 생각들을 하실 수 있을 것 같습니다.

 

C++은 확실히 C를 부분집합으로서 가지고 있습니다.

다만 프로그래밍의 방향이 C와는 다릅니다.

C++은 객체 지향 및 일반화 프로그래밍과 같은

멀티 패러다임을 지원하는 프로그래밍 언어입니다.

 

C를 부분집합으로 가지고 있다는 말은

C언어의 문법과 기능을 모두 사용할 수 있기 때문이죠.

1979년에 C언어에서 직접적으로 파생된

C with Classes라는 이름의 언어로 시작되었다가, 1983년에 지금의 이름을 갖게 되었습니다.

C++의 특징

비아르네 스트로우스트루프 라는 사람이 C언어를 바탕으로 만든 언어입니다.

C 계열 언어에서 "++"라는 것은 1을 더해서 원래 변수에 대입하라는 뜻입니다.

C는 B 언어를 계승한다는 의미에서 C가 되었는데 왜 C++이 D가 아니라 C++이 된 이유는

C 언어를 거의 그대로 두고 필요한 만큼만 향상시켰기 때문입니다.

그렇기 때문에 C에서 가능한 것들이 C++에서도 가능한 것이지요.

 

C++는 프로그래머의 자유도가 높은 언어로써, 객체 지향이나 절차 지향 등의 설계에 제한을 두지 않습니다.

다만, 객체지향과 일반화 프로그래밍을 사실상 거의 주된 패턴으로 사용하기 때문에

객체지향 언어에 가깝게 여겨집니다.

 

한국에서 컴퓨터공학과를 다닐 경우 배울 수 있는 프로그래밍 언어 3개 중에 속합니다.

그러나 실상 C++11 이후의 모던 C++ 기능을 가르쳐주는 곳이 매우 드물어서

C++의 객체 지향만 조금 배울 수 있게 됩니다.

C++의 객체 지향은 다른 언어에 비해서 좀 더 복잡합니다.

제대로 다루기 위해서는 별도의 서적을 참고하는 것이 권장되며,

실제 프로젝트의 코드에 대해 탐구하고 경험해보는 것 또한 권장됩니다.

 

C와의 차이점?

그렇다면 C와는 어떤 차이가 있는걸까요?

C++의 개발이 C언어를 기반으로 이루어졌기 때문에

대부분의 C 프로그램은 C++ 컴파일러에서도 문제없이 컴파일됩니다.

 

초기의 C++은 C++의 언어로 프로그래밍을 한 코드를 C로 변환하고

그것을 C로 컴파일 하는 방식을 채택하여 사용했을 정도입니다.

물론 C를 기반으로 만들어졌기 때문에 그랬던거지만 말입니다.

다만, C가 항상 C++의 부분집합이었던 것은 아니라서 공통적인 부분에서 몇몇 차이점이 있으며,

순수 C 소스 코드를 C++로 컴파일 할 때 문제의 여지가 생길 가능성이 있습니다.

 

C++은 C와 프로그래밍 패러다임이 크게 다릅니다.

그래서 C로 작성된 프로그램에서 C++ 방식으로 코딩하려면

해당 코드에서 C++에 새로 도입된 것을 추가하는 게 아니라,

설계부터 시작해서 완전히 새로 해야 하는 경우가 많습니다.

 

이유는 C++의 객체지향이 다른 객체지향 언어들에 비해

이해하기가 조금 난해한 개념이기도 하고

C++의 객체지향은 C언어를 하위 요소로서 유지하면서

여러가지 문법적인 요소를 추가해야하기 때문에

신경쓸 부분이 많아집니다.

그래서 초심자분들의 경우 C와 C++은 다른 언어라고 생각하고 접근하셔서 공부하는게 좋습니다.

 

C++은 C에대한 이해와 객체지향 프로그래밍의 이해가 모두 필요하므로

C를 배우고, Java를 배우신 후 C++에 입문하시게 된다면

공부가 편하실거라 생각됩니다.

 

다만 C를 알고 있다고 C++를 쉽게 할 수 있는 것은 아닙니다.

두 언어는 추구하는 설계 구조가 상당히 다르기 때문이인데요,

C언어는 절차 지향이지만

C++는 절차 지향, 객체 지향, 일반화 프로그래밍, 함수형 프로그래밍을 모두 지원하는 언어입니다.

그래서 C언어를 알고 있는 사람이 C++ 초보자용 교재를 1권 끝내고 프로그램을 만들어 보라고 하면

대부분 C 방식에서 벗어나지 못하게 됩니다.

C++ 방식을 잘 활용하려면 STL까지 배운 다음

자료구조와 스트림, 템플릿 정도는 쓸 수 있어야 합니다.

C++이 C언어의 변형버전이라는 얘기는 어느정도는 맞는 이야기긴 합니다.

C++의 특

C++는 객체 지향 프로그래밍을 지원하지만,

C++의 객체지향은 다른 객체지향 언어에서와는 성격이 조금 다릅니다.

대부분의 객체지향 언어에서는 많은 부분을 런타임에 처리하며 메모리를 자동으로 관리하는 반면,

C++에서는 최대한 많은 것을 컴파일 타임에 처리하는 것을 지향하며

메모리 등을 프로그래머가 직접 관리하게 하기 때문에 전반적인 클래스 디자인 자체가 상당한 차이를 보이게 됩니다.

 

Java 등의 다른 객체지향 언어에서와 같은 방식으로 C++ 클래스를 디자인하면

거의 틀림없이 컴파일이 제대로 안 되거나 메모리 문제가 발생하게 됩니다.

그래서 Java에서 막 C++로 입문한 학생이 프로그램을 만든다면 초반에는

메모리가 새는 프로그램을 만들게될 확률이 상당히 높습니다.

 

반면 C++ 스타일로 다른 객체지향 언어에서 프로그래밍을 하는 경우는

특별히 안 될 것은 없지만, 해당 언어의 스타일로 작성한 코드에 비해

시간이 많이 걸리고 너저분해 보이며 클래스 구조가 경직되어 수정하기 어려워집니다.

 

C++에서는 템플릿을 이용한 일반화 프로그래밍(Generic Programming)이 매우 폭넓게 사용됩니다.

특히 C++11을 시작으로 하는 모던 C++는 일반화 프로그래밍을 빼고 이야기하는 것이 불가능할 정도입니다.

 

일반화 프로그래밍의 결과물으로는 C++ 표준 라이브러리의 일부분으로 포함된 컨테이너, STL 같은 것들이 있으므로,

C++ 표준 라이브러리를 사용하는 순간 일반화 프로그래밍의 도움을 받는 것입니다.

따라서 '나는 C++을 사용하지만 템플릿을 이용한 일반화 프로그래밍은 어려우니까 패스하겠다'는 말은

애초에 성립하지 않는 말이지요.

중급 이하 개발자는 이런 결과물을 일상적으로 쉽게 가져다 쓰면 되고, 직접 만들어 쓸 필요는 없습니다.

이는 중급 개발자 정도로는 템플릿을 사용한 일반화 프로그래밍 기법을 정확하게 적용하는 것이 무척 까다롭고,

디버깅할 때 이해 불가능한 컴파일러 메세지를 받게 되는 경우가 많아서 발견된 오류를 수정하기도 어렵기 때문입니다.

이런 이유로 C++ 학습 초반에 템플릿 프로그래밍을 직접 하는 것을 피하고

기껏해야 컨테이너 클래스만 사용하는 습관이 들다 보니,

C++은 객체지향 언어이고 STL이라는 템플릿 라이브러리를 덤으로 쓸 수 있는 정도라는

오해가 널리 퍼진 것이라 생각이 됩니다.

하지만, 특수 목적의 컨테이너를 설계하거나 범용 라이브러리를 설계하는 수준의

고급 개발자가 되려면 템플릿을 사용한 일반화 프로그래밍을 능숙히 할 줄 알아야합니다.

 

C++을 배워보자

그렇다면 C++을 배우려면 어떻게 해야할까요?

사실 C++은 프로그래밍 언어들 중에서도 상당한 난이도를 자랑하는 언어입니다.

일단 기본적으로 배워야할 양이 많다는 점과 활용할 수 있는 기능들이나 특성들이 많은만큼

잘 활용하는 법 또한 어렵습니다.

사실 이전에 설명드렸던 C나 Java, Python같은 경우 입문을 하시는 경우라면

혼자 시작을 하셨다가 난이도가 올라가고, 배워야할 영역이 늘어나면서

학원을 찾는 경우가 많지만 C++같은 경우는

애초에 잘 배우시는게 중요하다고 생각합니다.

 

기초가 되어야하는 언어들을 배워야 하는 것도 있으니

하나를 알더라도 제대로 아는것이 중요합니다.

 

프로그래밍을 배우고싶고 전문가가 되어보고싶다면

하단의 이미지를 클릭해주세요. 상담은 무료이니

부담없이 말 걸어주시면 친절하게 원하시는 방향으로 이끌어드리겠습니다.

클릭해주시면 바로 상담 가능합니다.

안녕하세요 기형쌤입니다.

이제 날씨는 완전 겨울이 되어버렸네요.

위험한 시국에 감기걸리시면 위험하니 다들 옷 따듯하게 입으셔야해요...!

 

오늘 들고 온 이야기는 C언어에 관해서입니다.

프로그래머를 꿈꾸는 사람이라면 가장 처음 고민하는것이

C언어를 배울까? 와 그래서 C언어는 도대체 뭐지?

하는 고민일 것 같은데요

 

오늘은 C언어에 대한 기본적인 정보를 공유해드리려고 합니다.

C언어는 무엇일까요?

C언어는 1972년 벨 연구소의 데니스 리치 라는 사람이 만든 프로그래밍 언어입니다.

명칭은 그냥 C 이지만 우리나라에서는 C 언어 라는 명칭으로 주로 불립니다.

수많은 프로그래밍 언어가 생겨났지만 여전히 명실상부 가장 많이 쓰이는 프로그래밍 언어이기도 합니다.

 

C언어는 탄생 어원으로 들어가면 ALGOL이라는 언어에서부터 시작되었다고 할 수 있습니다.

ALGOrithemic Language의 줄임말인데 말 그대로 알고리즘 연구 개발에 사용되던 언어였습니다.

이것을 더 다양한 용도로 사용하기 위해 개발하고 개발하여 나온 언어가 Basic CPL이라는 언어였고

이 언어가 미국으로 건너오며 통칭 B라는 언어로 개발되어 불리웠습니다.

 

그리고 데니스 리치가 PDP-11이라는 컴퓨터를 제어하기 위해 B 언어의 특징을 물려받은

C 언어를 만들게 되었습니다.

 

C언어는 효율성을 중시하여 만들어진 언어입니다.

현재는 Java라던지 Python같은 쉽고 편한 언어들이 생겨났지만

당시의 프로그래밍 환경에서는 그렇지 못 했습니다.

C 언어 이전에도 고수준 언어들은 많이 존재했지만,

대부분 특정 어플리케이션 영역을 대상으로 하거나,

컴퓨터 과학 이론을 입증하기 위해 만들어진 실험실 언어들이었습니다.

 

당시에는 운영체제를 어셈블리어가 아닌 언어로 작성한다는 것은 금기라 말 할 정도로

시도조차 하면 안되는 것 이라는 인식이 있었습니다.

그러나 C언어는 그러한 금기를 깨는 엄청난 효율성을 보여주었고 금기를 정면으로 깨버렸죠.

그리고 아이러니 하게도 현대에 들어서 운영체제는 C언어가 아니면 안된다는 새로운 금기가 생겨버렸습니다.

그동안 컴퓨터의 평균 성능이 놀랍게 발전했고,

운영체제 역시 초기와는 비교할 수 없을 정도로 커져 효율성이 중요해졌기 때문입니다.

 

C는 처음부터 어셈블리어와 비교할만한 효율을 가지게 저수준으로 설계되었습니다.

개발 당시의 고수준 언어들은 원래는 프로그램 코드가 업무 서류로도 사용이 가능하도록 설계가 돼있기도 하여

문법들이 굉장히 불친절했습니다.

C는 이런 당대 고수준 언어들에 비해 매우 이해가 가기 쉬운 문법을 사용하여 초보자가 쉽게 접근할 수 있었죠.

 

C언어 자체는 지원되는 기능이 적고 문법이 간단합니다.

객체 지향 프로그래밍(OOP)이나 코루틴, 클로저, 메타 프로그래밍 등

고수준의 기능들을 지원하는 언어들과 비교하면 특히나 그렇습니다.

550쪽 정도밖에 안 되는 C언어 표준에서도 순수 문법 부분은 200쪽 정도밖에 안 되며

나머지는 다 라이브러리 관련 부분이고, 함수의 개수로 치면 고작해야 150개 근처밖에 되지 않습니다.

수천 개나 되는 기본 라이브러리를 지원하는 다른 언어들과 비교하면 정말 작고 간단하죠?

초반의 포인터 장벽만 넘는다면 문법 자체를 마스터하고

간단한 커맨드라인 프로그래밍을 할 수 있는 수준까지는 엄청 쉽게 진행하실 수 있습니다.

 

하지만 기능이 적다고 결코 쉬운 건 아니겠죠.

프로그래밍을 할 때 지원하는 기능이 적다고 그 적은 기능만 쓸 수는 없으니까요.

따라서 기본 라이브러리에서 지원하지 않는 기능은 결국 프로그래머가 직접 구현해서 써야 하는데,

1970년대 이후 프로그래밍 언어계에서 오늘날 영어와 같은 위치를 차지하고 있던 덕분에

그런 기능의 구현이나 최적화에 관한 많은 트릭들이 존재하고 이것을 얼마나 많이 알고있는가가

사실 C언어의 핵심이 됩니다.

C언어의 장점?

사람들이 많이 사용하는데에는 이유가 있겠죠?

 

C로 짜여진 코드는 속도가 빠르고 바이너리 크기도 작아 속도가 다른 무엇보다도 중요한 임베디드 혹은 모바일 계열,

또는 시스템 프로그래밍 등에서 주로 사용됩니다.

프로그램의 규모가 커질경우 C언어로 작성해서 얻을 수 있는 파일의 규모는 Python보다 훨씬 작기까지 하죠.

과거에는 메모리 가격이 비쌌던 만큼 메모리를 적게 잡아먹는 프로그래밍 기법이 선호했으며,

화성 탐사선도 이러한 점을 반영하여 C언어로 만든 프로그램을 사용했습니다.

 

이러저러한 고급 언어들이 나오는 상황에서도 아직 저수준의 제어를 위해 C가 필요한 경우도 많습니다.

예를 들어, OS를 만든다면 아무리 생산성을 고려한다고 해도

시스템 제어 측면과 OS의 기능들 위에서 돌아가는 어플리케이션 때문에라도 속도라는 면은 중요하고

그렇다고 속도를 높이기 위해 어셈블리어나 기계어로만 OS를 짜기에는 생산성이 매우 낮아지기 때문에

결국 돌고돌아 C를 쓰게되죠.

 

현시점에서 C의 가장 큰 의의는 사실상 모든 아키텍쳐와 운영체제에서 지원하는 언어라는 점입니다.

일반적으로 C++는 지원하지 않더라도 C는 지원하는게 보통이 되었습니다.

워낙 널리 쓰이다보니 CPU 디자이너들이 가장 먼저 하는 일은 C언어를 instruction set으로 포팅하는 것이

기본적인 상식이 되었고, 심지어 C언어 설계 자체가 CPU 인스트럭션 설계에 영향을 주는 단계에 이르렀습니다.

그런 관계로 이식성이 중요한 경우는 대개 C를 사용합니다.

 

고수준의 언어들이 많이 나오고있고 이렇게 이미 한물 간 언어처럼 보이지만,

여전히 '프로그래밍' 입문으로는 C를 추천하는 추세입니다.

 

C라는 언어는 매우 심플하면서도 배우는 과정중에 소프트웨어 구성의 최소단위인 bit부터 시작해서

메모리 관리, 그리고 고급 개념인 OOP와 비슷한 정도까지 흉내내면서 소프트웨어 전반을 훑게 되고,

C 를 배우는 과정중에 나오는 과제들은 커맨드라인에서 이미 쓰이고있는 기본적인 툴들을

reinvent the wheel하는식의 과제들이 많기때문에 바닥부터 훑어가며 견문을 넓히는데 좋습니다.

 

로우레벨부터 단계를 높여가며 관찰을 해보면,

머신코드는 머신에 따라 달라지고, 어셈블리어도 Intel/AT&T 등 문법에 따라 몇가지 버전이 존재하지만

결국 그 위쪽에서 C 언어로 대통합이 이루어지게 됩니다.

 

그리고 C 언어 위 쪽으로 향하게 되면  C++/Java/C#/Objective-C/Python 등으로 다양하게 갈라지죠.

결국 C 언어란 것은 과거와 현재를 잇는 중요한 꼭짓점이 되는 셈입니다.

C 언어가 사용되는 분야는?

C 언어가 사용되는 대표적인 분야는

기본적으로 운영체제 및 디바이스 드라이버 분야입니다.

윈도우, 리눅스, 유닉스 커널의 핵심부는 모두 C로 짜여져있습니다.

 

이외에는 마이크로 컨트롤러, 임베디드 시스템, 암호학 라이브러리, 프로그래밍 언어 인터프리터(CPython 등),

웹서버 등등의 기타 빠른 계산속도가 필요한 프로그램이나 라이브러리들에 사용됩니다.

그렇다면 C언어는 어디서 배우는게 좋을까?

C언어는 사실 쉬운언어이기에 혼자 독학하는 학생분들도 많습니다.

다만 기초를 탄탄히 잘 다져놓는것이 전문가가 되어가는 과정이라고 생각 합니다.

기초를 탄탄하게 쌓으시려면 좋은 곳에서 좋은 선생님께 배우는게

결국은 실력을 빠르고 확실하게 키우는 방법입니다.

 

IT 전문가가 되고싶으시다면 연락 주세요.

언제든지 무료 상담 해드리겠습니다.

 

아래의 네임카드를 클릭

해주시면 상담 진행 바로 가능합니다!

네임카드를 클릭해주세요!!

안녕하세요? 기형쌤입니다!!

 

오늘 제가 들고 온 것은 바로 Python입니다.

Python은 수많은 프로그래머들의 기본소양이라고 할 정도의 언어입니다.

 

Python은 그 기원이 굉장히 특이한 언어인데요.

바로 창시자인 귀도 반 로섬(Guido van Rossum)이

1989년 크리스마스주에 연구실 문이 닫혀있어서 심심한 김에 만든 프로그래밍 언어입니다.

 

재밌지않나요?

지금에 이르러서의 Python은  풍부한 머신러닝 라이브러리와 프레임웍으로

머신러닝, 딥러닝등 인공지능 개발을 위한 언어로서 각광을 받고 있는데

이러한 언어가 그저 심심한 김에 만든 언어라니...아이러니하죠ㅎㅎ

 

Python을 배우는 이유?

심심한김에 만든 언어를 왜 배우기 시작했을까요?

일단 문법이 매우 쉬워서 초보자들이 처음 프로그래밍을 배울 때 추천되는 언어입니다.

오죽하면 Python의 별명이 '실행할 수 있는 의사 코드(Executable pseudocode)'일 정도이니까요.

 

또한 가장 큰 이유는

전 세계의 모든 프로그래밍 언어 중에서 파이썬 정도의 낮은 난이도를 가지면서,

범용성을 갖추고, 파이썬 수준의 프로그램 개발 속도를 따라잡는 언어가 없기 때문입니다.

 

요점은 쉬운데 현업에서 사용하여도 엄청난 효율을 낼 수 있다는 점 때문에 배우는 것입니다.

C언어로 2년동안 완성하지 못한 프로젝트를 파이썬으로 한달만에 해냈다 는 극적인 경험담이 있을 정도이니

말 다 한 셈이죠.

Python의 특징?

단지 쉽다는 특징 말고 어떠한 특징이 있을까요?

 

Python의 기본 철학은 가장 아름다운 하나의 답이 존재한다 를 기본으로 하고 있습니다.

파이썬의 이런 철학은 이후 다른 프로그래밍 언어들에도 수출되어, 2010년대 들어서는 기존 언어들도

파이썬처럼 최대한 문법 구조를 단순화시키고 통일하려는 문법 대통일 운동이 일어나기 시작했다.

 

그렇다면 왜 이러한 현상이 이루어졌던걸까요?

 

단순히 말하자면  프로그래머들이 프로그램을 돌려보기 좋게 한다는 매우 좋은 영향이 있어서 입니다.

 

다른 객체지향 언어인 C,C++,Java같은 경우의 코딩은 각자의 취향에 맞게 발산 진화하는 반면

파이썬은 위의 철학들을 만족 시키는 하나의 스타일로 수렴 진화하는 성향이 있습니다.

이런 성향은 다른 언어에는 없는 파이썬스러움(pythonic)이라는 독특한 개념을 낳게 되었는데,

복잡하지 않으면서 의미가 명확하고, 코드의 축약보다 뚜렷하게 보이는 흐름을 중시하는

파이썬의 철학을 지칭하는 개념이 되었습니다.

 

이러한 철학 때문인지 Python의 문법체계는 상당히 엄격한 편입니다.

예를 들자면 다른 언어에서는 해도 되고 안 해도 되는 들여쓰기가 이 언어에서는 의무로 해야하는 등이 있습니다.

 

또 다른 특징으로

파이썬의 가장 큰 특징 중 하나. 파이썬은 반복 가능한 객체(iterable)라는 강력한 기능을 제공합니다.

이 객체는 집합, 문자열, 리스트, 튜플, 딕셔너리, 그리고 함수까지도 반복이 가능하며,

이것을 for 구문에서 사용할 수 있게 해줍니다.

리스트와

튜플 등은 좀 편해지는 정도라 할 수 있지만, 함수의 값을 반복할 수 있다는 것은 큰 장점이됩니다.

Python의 다양한 구현체

Python은 다양한 언어들과 함께 구현화되기도 합니다.

구현체로서 Python을 지칭할 때에는 CPython(싸이선)이라고 불리우는데

이는 Python이 기본적으로 C로 구현되었기 때문입니다.

 

구현체의 종류는 Stackless Python, C언어를 확장한 Cython, Python으로 Python을 만든 독특한 형태의 PyPy,

Java로 구현한 Jython, .Net Framwork로 구현한 IronPython, Java Script로 구현한 Brython 등의 다양한

언어들의 구현체들이 존재합니다.

 

이는 Python의 가장 큰 장점인 쉽고 범용성이 넓다는 특징 덕분에 가능한데요.

다만 Jython과 IronPython은 둘 다 CPython에 비하면 실행 속도가 매우 느리며,

Jython은 경우에 따라서 심각할 정도로 많이 느립니다.

그래서 주요 기능을 수행하는 데에는 문제가 있지만,

보조 기능에서 사용하면 번거로운 작업들을 매우 손쉽게 Python 스크립트로 Java, .NET Framework의

자원을 그대로 끌어다 써서 할 수 있기 때문에 개발 공수와 편리함에서 큰 장점이 있어 주로 보조적인 기능 수행을 할 때 사용되곤 합니다.

 

가장 특이한 구현체는 Python으로 Python을 만든 PyPy일텐데요

2007년에 처음 발표된 Python의 언어 구현 중 하나로, C로 짜인 기존의 CPython과 달리

Python으로 Python을 만드는 프로젝트입니다.

이 프로젝트의 진짜 놀라운 점은 기존 CPython보다 전혀 느리지 않을 뿐더러,

오히려 성능면에서 CPython을 능가하고 있다는 점입니다.

나아가 계발이 진행되고 연구가 진행됨에 따라 점점 더 빨라지는 추세입니다.

표준 구현인 CPython과의 속도비교. PyPy를 개발하면서 지속적으로 업데이트 하는중입니다.

Python은 개발자를 꿈꾸신다면 배워놓으시는게 필수라고 추천드릴만큼

중요한 언어입니다.

그렇다면 Python을 배우시려면 어떻게 해야할까요?

개인적으로 책을 보며, 인터넷 강의를 보며 공부하셔도 괜찮을 정도로

쉬운 언어인지라 이런저런 책을 추천드려도 괜찮을 것 같지만

 

Python을 배우고 그 심화과정까지 배워 전문가가 되셔서

결국 취업까지 해결하고 싶으시다면 저와 함께

IT 전문가 과정을 진행 해보시는것을 추천드립니다.

 

아직은 블루오션인 IT 시장에 어서 뛰어들어 봅시다!

관심있으시다면 하단의 이미지링크를 클릭해주세요. 바로 무료상담 가능합니다.

이미지를 클릭해주세요!

안녕하세요! 기형쌤입니다. 오늘 제가 가져 온 이야기는

JAVA에 대한 것입니다.

 

일단 JAVA는 무엇일까요?

JAVA는 객체지향 프로그래밍 언어입니다.

말이 조금 어렵죠? 객체지향 프로그래밍 언어란 프로그램의

설계 방법론이자 개념의 일종입니다.

프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라,

프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식입니다.

객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 보시면 됩니다.

JAVA는 크게 4 종류로 나뉩니다.

1. Java SE

 JAVA SE는 대부분의 사람들이 가장 많이 접하는 말하자면 표준 에디션입니다.

 JAVA의 핵심적인 API와 기능들을 제공하고 있습니다.

 

2. Jakarta EE

 이전에는 JAVA EE라고 불리웠고 기업등지에서 운영하는 서버 페이지에 특화되어 있습니다.

 웹 애플리케이션 서버에 관련된 기술들이 포함되어 있습니다.

 

3. JAVA ME

 PDA나 셋톱박스, 센서 등의 임베디드 시스템 환경에 특화되어있는 에디션입니다.

임베디드 시스템이란 세탁기나 냉장고 등 가전제품에 들어가는 단일목적 컴퓨터라고 생각하시면 좋습니다.

 

4. JAVA FX

데스크톱 애플리케이션 개발 및 배포를 위한 에디션입니다. 크로스플랫폼 이식과 GUI 라이브러리를 제공합니다.

C, C++과의 차이점?

C 언어는 포인터 등을 활용한 저수준 시스템 프로그래밍(리눅스 커널과 하드웨어 프로그래밍)에 강점을 가집니다.

C++은 C의 그러한 장점을 거의 그대로 가져오면서 객체 지향이나 일반화 프로그래밍과 같은 멀티 패러다임을 지원하고자 하는 시도(3D게임, 그래픽 프로그래밍)에서 만들어졌습니다.

이렇게 고수준과 저수준 개념 모두를 포함하려 하다보니 점차 복잡해졌고

게다가 최신 프로그래밍 환경을 지원하기 위해 지속적으로 개정되고 있는 모던 C++는 변화의 폭이 커서, 새로운 기능을 전부 제대로 다룰 줄 아는 프로그래머는 비교적 적다는 평이 널리 받아들여지고 있습니다.

그에 비해 JAVA는 C++의 방향성과는 다르게 안정성에 포인트를 맞춰 개발되어 왔습니다.

JAVA는 고수준의 객체지향 부분을 잘 구현하는 것에 집중하는 방향으로 언어가 복잡해지는 것을 방지하고 있습니다.

 

JAVA와 C,C++의 공통점은 같은 C계열 프로그래밍 언어이기 때문에 비슷한 문법 구조를 가지고 있다는 것에 있습니다.

하지만 그러면서도 JAVA가 C,C++보다 훨씬 널리쓰이는 분야가 많이 존재합니다.

대표적인 예: 안드로이드 앱이라던지 웹 애플리케이션

 

하지만 안정성을 중요시하는 언어이기 때문에 속도가 느릴 수 있습니다.

그렇게 속도가 중요한 부분들은 따로 떼어서 C,C++언어로 따로 개발하기도 합니다.

JAVA의 특징!

Java의 가장 큰 특징은 플랫폼에 독립적인 언어라는 점 입니다.

C나 C++같은 경우 소스 코드를 직접 컴파일하여 링크하는 것과는 다르게

Java는 .class 파일을 생성하고 이 파일의 바이트 코드를 읽은 뒤 기계어로 바꾸어 실행하는 것은 Java Virtual Machine

통칭 JVM입니다. 이 방식이 좋은 이유는 윈도우 환경에서 Java를 이용해 빌드한 프로그램을

리눅스나 맥OS에 적합한 JVM만 깔려있다면 바로 실행이 가능합니다.

 

JAVA의 다른 특징 중 하나는 범용성입니다.

JVM 기반의 프로젝트에서는 하나의 언어만을 고집하지 않습니다.

함수형 언어가 유리(최근 유행하는 빅데이터 등)한 부분은 Scala로 작업하며, 견고한 인터페이스와 대규모 통합이 필요한 곳은 Java로 작업한 뒤 이들을 서로 합쳐서 운영하는 게 가능합니다.

실제 현업에서는 Java를 비롯한 여러가지 인기 언어가 자주 사용되므로 장단점을 잘 알아두는게 좋습니다.

다른 언어에 대해 맹목적으로 찬양/비판하는 태도보다는 환경이나 주어진 작업의 특성에 따라 적합한 언어를 선택할 수 있는 노하우가 있다면 좋은 개발자로서 이름을 날리실 수 있을 것입니다.

JAVA는 왜 쓰는걸까요?

JAVA는 왜 아직도 가장 많이 쓰이는 언어일까요?

기본적으로 JAVA는 수많은 개발자와 레퍼런스를 가지고 있습니다.

오래된 언어이고 범용성이 뛰어난 언어이다보니 수많은 JAVA개발자들이 있고

시대에 맞춰 지속적인 개발이 이뤄지고, 그에따른 수많은 레퍼런스들을 갖고있습니다.

 

또한 JAVA는 비교적 높은 생산성을 가지고 있습니다.

IT는 점차 발전해나가고 있고, 무거운 프로그램들이 많아짐에 따라 복잡한 C,C++을 이용한

프로그래밍이 사실상 너무 힘들어졌습니다. 언어 자체가 복잡할 뿐 아니라

관리 또한 힘들어서 프로그램이 커지면 커질수록 작업이 힘들어지게 되었습니다.

하지만 JAVA는 C,C++과 문법적으로도 비슷하면서도 객체 지향을 적극적으로 활용,

호황성까지 좋은 언어이기 때문에 등장하자마자 순식간에 대세가 되었습니다.

 

위에서도 지속적으로 말했다시피 JAVA의 큰 장점 중 하나는 안정성입니다.

메모리를 대용량으로 사용하는 프로그램에서 상대적으로 C/C++보다 안정적인 모습을 보일 때도 있는데, 이런 경우에 JVM이 시작될 때 필요한 메모리를 먼저 통으로 잡아버립니다.

메모리를 자주 할당하거나 해제하는 C/C++ 프로그램은 오히려 Java보다 성능이 느릴 수 있습니다.

JAVA 프로그래머가 되려면?

범용성이 넓다는 것은 그만큼 알아야 기본적인 지식의 베이스도 넓다는 말입니다.

그리고 기초적인 지식은 지식을 쌓아 올리고 실력이 높아지는데에

아주 중요한 역할을 하죠.

 

기초부터 차근차근 잘 다져나가셔야 합니다.

기초부터 전문가까지 차근차근 공부하실 수 있습니다.

그리고 지금이라면 국비지원 받으시면서 무료로 진행하실 수 있습니다.

언제나 연락주세요. 기다리고 있겠습니다.

하단의 이미지를 눌러주세요! 바로 상담 가능합니다.

이미지를 누르시면 상담 진행 바로 가능합니다.

 

안녕하세요 기형쌤입니다!

오늘 제가 들고 온 이야기는 클라우드 입니다.

 

클라우드란 무엇일까요? 구름?

ㅎㅎ제가 말 하고싶은건 클라우드 컴퓨팅이라는

IT 기술의 이름입니다.

 

클라우드 컴퓨팅은 사용자의 직접적인 활발한 관리 없이

특히 데이터 스토리지(클라우드 스토리지)와 컴퓨팅 파워와 같은 컴퓨터 시스템 자원

필요 시 바로 제공(on-demand availability)하는 것을 말합니다.

일반적으로는 인터넷 기반 컴퓨팅의 일종으로 정보를

자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술을 의미합니다.

 

클라우드 컴퓨팅의 정의는 개인이 가진 단말기를 통해서는 주로 입/출력 작업만 이루어지고

정보분석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드라고 불리는

제3의 공간에서 이루어지는 컴퓨팅 시스템 형태라고 할 수 있습니다.

클라우드 컴퓨팅의 특징?

그렇다면 클라우드 컴퓨팅은 어떤 역할을 하고 어떤 장점이 있기에 이렇게 중요한 분야가 되었을까요?

 

일단 단체들을 위한 민첩성이 개선될 수 있는데, 클라우드 컴퓨팅은 기술 인프라스트럭처 자원들의

재보충, 추가, 확장에 대한 사용자의 유연성을 제고시킬 수 있습니다. 

따라서 클라우드 컴퓨팅을 이용한다면 비용 절감의 효과를 가져올 수 있습니다. 공개형-클라우드 배급 모델은 서버 구매 등에 들어갈 비용을 영업 비용으로 전환할 수 있습니다.

인프라스트럭처가 일반적으로 서드파티에 의해 제공되고 한 차례 정도 또는 드물게 수행되는 막대한 연산 작업을 위한 구매가 불필요해짐에 따라 시장 진입 장벽 또한 낮출 수 있습니다.

유틸리티 컴퓨팅 기반의 가격 책정은 사용 기반 과금 옵션별로 세부적입니다. 또한, 클라우드 컴퓨팅을 사용하는 프로젝트 구현에 조직 내부 IT 실력이 거의 필요하지 않게됩니다.

 

장치 및 위치 독립성이 생깁니다.

장치의 위치가 어디에 있는지, 무슨 장치(PC, 휴대전화)를 사용하는지에 관계 없이 사용자들이 웹 브라우저를 통해 시스템에 접근할 수 있게 됩니다. 인프라스트럭처가 부지 밖에 있고(보통 서드파티에 의해 제공됨) 인터넷을 통해 접근할 경우 사용자들은 어느 위치에 있어도 접속이 가능하게 됩니다.

그래서 클라우드 컴퓨팅 애플리케이션의 유지보수는 더욱 쉬워지게 됩니다. 각 사용자의 컴퓨터에 애플리케이션을 설치할 필요가 없으니, 각자 다른 위치에서 접근이 가능합니다.

 

여러 사용자가 저장 및 이메일을 대기하지 않고 동일한 데이터를 동시에 작업할 수 있으니 생산성이 향상될 수 있습니다. 필드가 일치할 때 정보를 다시 입력할 필요가 없으므로 시간을 절약할 수 있으며, 자신의 컴퓨터에 응용 소프트웨어 업그레이드를 설치할 필요 또한 없습니다.

 

컴퓨터 네트워크 구성도에서 인터넷은 구름으로 표현됩니다.

이때 구름은 숨겨진 복잡한 인프라 구조를 의미하지만 사용자는 이러한 복잡한 인프라 구조를 알지 못해도 클라우드 컴퓨팅을 이용할 수 있습니다.

이용자들의 입장에서 제공자의 서비스들을 표현하는 네트워크 요소들은 마치 구름에 가려진 것처럼 눈에 보이지 않기 때문입니다.

그렇다면 클라우드 아키텍트는 누구인가?

클라우드 아키텍트(cloud architects)는 날로 복잡해지는 클라우드 기술에 대응해 기업의 클라우드 컴퓨팅 아키텍처를 관리하는 책임자입니다.

이들이 관장하는 클라우드 컴퓨팅 아키텍처는 프런트-엔드 플랫폼, 서버, 스토리지, 딜리버리 및 클라우드 스토리지 관리에 필요한 네트워크 등 클라우드 컴퓨팅과 관련된 모든 것을 아우릅니다.

 

무슨 일을 하는가?

가트너의 애널리스트 카일 힐겐도르프는 2016년 발표한 ‘클라우드 아키텍트의 역할 및 기술 분석(Analyzing the Role and Skills of the Cloud Architect)’ 보고서에서

“클라우드 컴퓨팅의 도입은 다차원적이어서 여러 해에 걸친 프로그램으로 운영돼야 한다. 한정된 기간의 프로젝트여서는 안 된다. 클라우드 도입은 복잡하기 때문에 클라우드 컴퓨팅이 보장하는 트랜스포메이션으로 조직을 이끌어가는 최소 1명의 설계 책임자가 필요하다.

이것이 바로, 대다수 IT 조직이 이제는 꼭 필요하다고 생각하는 직종, 즉 클라우드 아키텍트의 역할이다"라고 말했습니다.

클라우드 컴퓨팅은 사용자로서는 편하지만 자체의 도입에 대해서는 조금의 복잡성을 지니기 때문에

처리하기 위해 대다수 기업은 클라우드 아키텍트가 필요합니다.

이들은 위험을 회피하고 원활한 전환을 보장하는데 기여하면서, 기업의 클라우드 도입을 전반적으로 지휘하게 됩니다.

클라우드 아키텍트의 급여?

페이스케일의 자료에 따르면 클라우드 아키텍트의 평균 급여는 연 12만 4,923달러이고, 경험, 지역, 기술에 따라 8만 2,309달러에서 18만 5,208달러까지 다양하다고 합니다.

이것을 원화로 생각한다면 연간 약 1억 3,537만 9,055.10원(2020년 12월 환율 기준)의 수익이

이들의 평균적인 급여인 셈입니다.

 

클라우드 아키텍트가 되려면?

클라우드 아키텍트가 지녀야 할 기본 소양은 IT 전반에 걸쳐있다고 해도 과언이 아닙니다.

그러니 정말 제대로 배우는것만이 클라우드 아키텍트로서 성공할 수 있는

가장 빠른 길이라고 봐도 무방하겠죠.

클라우드 전문가가 되실 수 있는 과정을 추천드립니다.

앞으로 더더욱 발전해나가고 전문가의 필요성이 극대화 되어있는 클라우드 시장의

전문가로서 성장해나가고 싶으시다면 연락 주세요.

▼클릭

안녕하세요? 기형쌤입니다.

 

오늘 알려드릴 정보는 과연 Linux란 무엇인가? 입니다.

수많은 개발자들이 기본적으로 숙지해야 한다는 이 Linux는

개발자라면, 프로그래머라면 기본적으로 숙지해야하는 OS입니다.

 

OS 즉 운영체제라는 말인데, 왜 MAC이나 Windows가 아니라

Linux에서 개발을 하는 것일까요?

 

일단 Linux는 오픈소스 OS입니다.

오픈소스 OS란 말 그대로 OS를 개발할 때 필요한 소스 코드나

설계도를 누구나 열람할 수 있게 공개해놓은 것입니다.

그리고 나아가 2차 창작을 허용하고 유료 배포를 허용한 OS이기도 합니다.

Linux 운영체제는 참 독특한 OS입니다.

Linux와 CLI 환경 자체가 간단한 프로그래밍 언어를 이용해서

처리할 수 있는 수많은 과제들을 제공해주는 소스입니다.

그래서 이들은 GUI에서 간단히 클릭으로 끝낼 수 있는데도 CLI 셸을 통해서 명령을 내리고

한번 명령 내리는 것으로 끝나는 것들도 굳이 셸 스크립트 혹은 다른 프로그래밍 언어를 이용해서 만듭니다.

OS의 핵심 기술이 바로 이 Linux 커널이라고 생각하시면 됩니다.

Linux 배우는데는 얼마나?

Windows OS를 중급이상 사용 가능한 사용자라면 Linux 역시 1개월 정도 학습하면 쉽게 접근가능합니다.

그리고 수 많은 개발자들이 오픈소스를 이용하여 만들어 놓은 배포판들이 있어

Ubuntu나 Fedora를 사용하여 USB나 SSD로 여러 배포판의 Linux OS를 테스트 해볼수 있는 장점도 있습니다.

 

그렇게 여러가지 버전의 배포판들로 연습하고, 만들어보다보면 어느새 프로그래밍에 대한

자신만의 지향점이 생겨 더더욱 발전할 수 있는 계기가 되겠죠?

거기에다 공개되어 있는 커널 소스와 기타 오픈소스 프로그램들을 마음대로 가져다 자신만의 Linux 배포판을 만들어 브랜딩이 가능합니다.

그래서 모든 Linux 배포판의 갯수를 집계한다는 것은 불가능 하나

어느 정도 공개적으로 배포되어지거나 인지도가 있는 배포판을 연대표(타임라인)식으로 공개한

GNU/Linux 배포타임라인에 따르면 약 450여개의 배포판이 있다고 전해집니다.

 

보안

수많은 개발자들이 Windows나 MAC OS에서 개발을 진행하지 않고

Linux에서 개발을 진행하는 까닭 중 큰 비중을 차지하는 이유에는

보안상의 이유도 있습니다.

 

Linux는 슈퍼유져, 일반유져, 그룹등으로 파일 관리가 되고 있어

윈도우즈등 타 OS에 비해 안전한 환경입니다.

더욱이 Linux 배포자가 분산되어 있고 악성코드가 주로

MS 윈도우즈를 타겟으로 하고 있기 때문에 더더욱 그렇습니다.

 

그리고 기본적으로 Linux를 이용하는 유저라면 프로그래머거나

프로그래밍을 하고싶어하는 예비 전문가들이니

컴퓨터에 대해 더 잘 알테죠?

그래서 더욱 호락호락하게 뚫리지 않을 것을 해커들도 잘 아니

오히려 보안 체계도 뚫기 쉽고, 타켓층도 광범위한

Windows를 공략하는 셈입니다.

Linux를 배우려면?

더 많은 정보들이 있고, 더 많이 이야기할게 많지만

글로만 Linux를 전달하려니 횡설수설하게되네요.

이렇게 글로 정보를 얻어가시는 것 보다는 스스로 해보시는게

더 확실한 배우는 방법이라고 생각합니다.

 

그렇다면 Linux, 프로그래밍을 어떻게 배울 수 있을까요?

전문가 양성 프로그램을 추천드립니다.

유망직종 정보보안(화이트해커)
네트워크, 시스템&서버, 프로그램, DB 분야 를
국비지원으로 전액 무료 수강하실 수 있는 프로그램입니다.

 

시스템 엔지니어, 클라우드아키텍트, 빅데이터개발자, 앱개발자, 웹개발자

등 기본적으로 Linux를 다뤄야하는 과정이 많기에

Linux를 배우시면서 나아가 더 많은 과정에 대해 무료로

공부해보시는걸 추천드립니다.

 

클릭▼

안녕하세요! 기형쌤입니다.

 

이제 2020년이 얼마 남지 않았네요ㅜㅜ

 

요즘은 왜이리 시간이 빠른지 억울하기까지 합니다.

심지어 코로나 때문에 올 한 해 뭔가 한 것 같지가 않아서 더 그런가봐요.

 

요즘 취업 준비는 어떻게 하고계세요?

너무 힘들죠?ㅠㅠ

안그래도 많이 위축되어있는 취업시장인데

코로나 때문에 대면 면접도, 취업을 위한 학원에 가기도 무서운 요즘

 

그래서 IT 업계가 각광 받는것 같아요.

재택근무도 가능하고 실무 면접도 서버를 열어 진행하기도 하니까요.

 

그런 의미에서 오늘 소개해드릴 직업은 앱개발자 입니다.

APP개발자란 무엇인가요?

요즘 핸드폰 다들 사용하시죠?

핸드폰에서 구동하는 프로그램들을 기본적으로 어플리케이션(Application)이라 부르고

앞의 세 자만 떼어와 편하게 앱(APP)이라 부르죠.

앱 개발자는 문자 그대로 그 APP을 개발하는 개발자입니다.

 

어떠한 앱들이 있을까요?

 

스마트폰의 성능 향상을 시키기 위한 앱도 있고

인터넷에 더 자유롭게 접근할 수 있는 앱,

요즘 시기에 가장 많이들 사용하시는 유통(배달)앱 등

많고 다양한 앱들에 관여하는 직종이 APP개발자 입니다.

 

APP개발자가 하는일?

그렇다면 앱개발자가 하는 일은 무엇일까요?

단순히 개발을 한다 라고 하면

코딩을 하며 뚝딱뚝딱 프로그램을 만드는 장면을 상상하실 수도 있는데요

 

앱개발자의 업무는 만들고자 하는 어플리케이션을

기획하고, 제작하고, 유통하는 것 까지가 주요 업무 입니다.

 

기획단계에서는 만드려는 어플리케이션과 유사한 어플리케이션이 있는지,

고객의 요구사항이 무엇인지 조사하고

개발하고자 하는 어플리케이션으로 어떻게 돈을 벌 것인지

즉 사업을 구상하고 계획을 수립합니다.

 

기획이 어느정도 마무리 되면 이제는 개발을 해야겠죠?

가장 처음으로 생각해야 할 것은

이 어플리케이션을 최초로 구동시킬 메인 OS를 정하는 것입니다.

 

OS에는 현재 크게 2 종류가 있죠?

바로 Android와 IOS인데요,

쉽게 말하자면 갤O시와 애O입니다.

 

중국의 샤O미에서 사용하는 OS인 미유아이(MIUI)는

Android의 오픈 소스를 기반으로 제작된 OS이고

화웨이의 자체 OS인 훙멍이라는 OS도 존재하지만

상당히 비주류적인 OS이기에 대표적인 OS

갤O시의 Android와 애O의 IOS를 기반으로 개발을 시작합니다.

 

그래픽 디자이너와 수시로 상호작용 하며

최초 의도했던대로, 또 기획했던대로 어플리케이션이

제작되고 있는지 디자이너와 지속적으로 협업을 합니다.

 

마지막으로 제작된 어플리케이션을 유통해야 합니다.

바로 사용자에게 전달되는 경우도 있지만

오픈 마켓을 통해 판매되는것이 일반적이겠죠.

 

유통 이후 지속적으로 업그레이드, 버그 수정 등

관리를 해주어야 야합니다.

앱개발자의 앞으로 전망?

그렇다면 앱개발자의 앞으로의 전망은 어떨까요?

핸드폰이 없어지지 않는한

또는 대체제가 나오지 않는 한

스마트폰은 점점 개발되어 갈 것이고

그만큼 다양한 어플리케이션이 개발되고,

업그레이드 되어야 하니 수요는 점점 늘어만 갈 것입니다.

 

또 온라인으로 진행되던 서비스는 핸드폰 어플리케이션으로,

핸드폰 어플리케이션이 PC로 서비스를 확대하면서

앱개발자의 기술력이 많이 필요하게 될 전망입니다.

 

앱개발자가 되는법?

앱개발자는 전공자 뿐 아니라

비전공자여도 훈련만 받으신다면 충분히

개발자로서 당당히 업무를 하실 수 있습니다.

 

IT의 여러 분야가 그러하지만

학력보다는 실력이라는 슬로건이 어울릴만큼

개발자의 능력을 중시하는 시장이기에

실력을 키우는것이 중요합니다.

 

그렇다면 실력을 어디서 키워야 할까요?

 

비전공자여도 기초부터 전문가 과정까지

실력을 키워드리는 전문가 양성 프로젝트!

 

전문가 과정이라고 해서 가격이 걱정되신다면

걱정하지 마세요!

국비로 지원되는 이 프로젝트는

학생분이 부담하신 금액이 0원!

 

오히려 훈련수당 이라는 지원금을 매 달 최대 40만원

받으시면서 공부하실 수 있습니다.

 

코로나 시국인 현재 비대면 LIVE로 수업 진행을 하고 있으며

방역 단계의 격하에 따라 현장강의도 진행하고 있습니다.

 

관심있으시다면 언제나 연락 남겨주세요!

 

▼클릭해주세요!

+ Recent posts