본문 바로가기

개발자

IT 사업 구분(SI/솔루션/웹 에이전시/SM) * 본포스팅은 에서 발췌한 내용으로 작성되었습니다. ✔ SI [System Integration]의 약어로, 시스템 통합 개발을 의미합니다. 이 단어를 IT 현장에서 사용되는 의미로 바꾸면, [아무것도 없는 상태에서 시스템을 새롭게 만드는 개발]입니다. 즉, 고객이 원하는 것을 듣고 처음부터 시작하여 완성하는 개발입니다. 제로 베이스에서 요구 사항을 분석하고 설계하고 개발하다 보니, 대부분 일정이 빠듯하게 진행됩니다. 수익 모델은 대부분 인건비를 기반으로 하고 있습니다. 즉, 같은 개발을 하더라도 인건비를 아끼면 수익이 더 생기므로 다소 힘든 프로젝트 진행 구조입니다. 하지만 가장 많은 개발 사업이 일어나는 분야라서 장점과 단점이 명확히 있습니다. ✔ 솔루션 솔루션은 고객이 원하는 프로그램을 사전에 만들.. 더보기
Public IP(공인 IP, 외부 IP) vs Private IP(사설 IP,외부 IP) * 본포스팅은 에서 발췌한 내용으로 작성되었습니다. IP의 개념은 대체로 잘 아는데, Public IP와 Private IP의 차이는 모르는 경우가 많습니다. 이 개념은 명확하게 알아 두는 것이 좋습니다. 그 이유는 개발자 가 서버나 장비의 접속에 관해 얘기할 때 두 개의 IP 개념을 명확히 구분해서 사용하는데, 여러분은 이 개념을 구분하지 못해서 대화의 어려움을 겪는 경우가 많기 때문입니다. Public IP는 [공인 IP] 혹은 [외부 IP]라고 하는데, 외부에서 나를 찾는 주소로, 통신사가 집이나 회사에 인터넷이 연결되도록 만들어 주는 회선에 부여된 주소입니다. Private IP는 [사설 IP] 혹은 [내부 IP]라고 하는데 내부에서 나를 찾는 주소입니다. 외부에서 우리 집에 인터넷을 연결하고, .. 더보기
프로그램의 종류-웹과 앱 * 본포스팅은 에서 발췌한 내용으로 작성되었습니다. 많은 종류의 프로그램 중 가장 대표적인 것이 웹(Web)과 앱(App)입니다. IT 시장의 대부분을 차지하고 있는 이 두 가지 프로그램의 기본 개발 구조만 확실히 알아도, 실제 현장에서 업무를 하는 데 충분합니다. 향후 새로운 종류의 프로그램 개발에 참여하더라도, 이 두 가지 개발 방식의 지식을 기반으로 새로운 개발 구조를 배운다면 충분히 업무를 진행할 수 있습니다. 웹은 브라우저를 통해서 특정 사이트에 접근하여 프로그램을 사용하는 것이고, 앱은 스토어를 통해 원하는 앱을 다운로드받아 본인의 기기에 설치하여 사용하는 것입니다. 여기서 한 가지 짚고 넘어가야 할 것이 있습니다. 웹은 PC로 이용하고 앱은 모바일로 이용한다고 생각하는 경우가 종종 있습니다... 더보기
개발의 종류(프로젝트형, 프로덕트형, 기술 개발) * 본포스팅은 에서 발췌한 내용으로 작성되었습니다. 현장에서 진행되는 개발을 3가지로 분류하고 각 개발의 특성에 대해서 알아보겠습니다. 개발은 크게 프로젝트형 개발, 프로덕트형 개발, 기술 개발로 구분할 수 있습니다. 참고로, 실제 IT 현장에는 무수히 많은 종류의 개발이 있으며, 개발 종류가 명확하게 분류되어 있지는 않습니다. 1. 프로젝트형 개발 개발에 필요한 요구 사항을 사전에 확정 하고, 해당 요구 사항에 맞춰 정해진 기간 내에 프로그램을 만드는 형태의 개발입니다. 대표적인 예로 SI 개발이나 솔루션 프로젝트 등을 들 수 있습니다. 고객사가 개발에 필요한 요구 사항을 사전에 정의하여 프로젝트를 발주하고, 개발을 수행하는 회사를 선정하고, 선정된 개발사와 요구 사항에 대한 범위 및 방법에 대해서 협.. 더보기
KODE VICIOUS 개발 지옥 : 믿을 놈 하나 없는 비정한 업계의 소프트웨어 엔지니어링 【 대상 독자층 】 - 코딩을 평생의 업으로 삼은 소프트웨어 개발자 - 시스템 세부사항과 기능 확장 방법을 탐구하는 열정적인 프로그래머 - 실무를 위한 프로그래밍 및 협업에 관한 노하우를 얻고자 하는 개발자 - 개발자와의 소통에 어려움을 느끼는 IT 업계 종사자 【 책 소개 】 소프트웨어 개발 업계 종사자를 위한 현장감 있고, 삐딱하고, 대담한 조언들 * 튜링상 수상자 도널드 E. 커누스 추천 도서 15년 넘게 수많은 코더와 IT 업계 종사자들에게 현장의 날카로운 통찰력을 공유해 온 Kode Vicious는 프로그래머들이 현업에서 겪는 중차대한 문제들에 관한 핵심적인 조언을 전한다. ACM Queue와 Communications of the ACM에 게재된 KV의 칼럼들 중 가장 인기 있는 주제를 꼽아 .. 더보기
[강화학습②] 마르코프 리워드 프로세스(Markov Reward Process) 마르코프 프로세스에 보상의 개념이 추가되면 마르코프 리워드 프로세스Markov Reward Process가 됩니다. 아래 그림을 보겠습니다. 아이가 잠이 드는 MRP 아까 보았던 아이가 잠이 드는 MP에 빨간 색으로 보상 값이 추가된 것을 확인할 수 있습니다. 이제는 어떤 상태에 도착하게 되면 그에 따르는 보상을 받게 되는 것이죠. 예를 들어 자기 위해서 가만히 누워 있는 것은 아이 입장에서 조금 답답하기 때문에 -1의 보상을 얻습니다. 반면 일어나서 노는 상태는 당장이 즐겁기 때문에 +1의 보상을 받습니다. 눈을 감게 된 것도, 조금씩 잠이 오는 상태도 각각의 보상을 받으며 마침내 잠들게 되면 드디어 목표하던 바를 이루기 때문에 +10의 보상을 받으면서 프로세스는 종료됩니다. 아까 마르코프 프로세스는 .. 더보기
왜 코틀린을 선택해야 하는가? 코틀린을 사랑할 수 밖에 없는 이유! * 이 포스팅은 《다재다능 코틀린 프로그래밍》에서 발췌한 내용으로 작성되었습니다. 아, 코틀린이여! 코틀린은 러시아 상트페테르부르크 근처의 섬의 이름이지만, 이 책에서 이야기할 코틀린은 그 섬의 이름을 딴 프로그래밍 언어다. 코틀린을 사용하는 프로그래머들은 코틀린을 단순히 좋아한다고 표현하지 않는다. 코틀린을 사랑한다고 말한다. 프로그래머들은 왜 코틀린을 사랑할까? 우리는 이 질문에서 시작하려 한다. 먼저 코틀린 소프트웨어 개발 키트(SDK, Software Development Kit)를 설치할 것이다. 그리고 코드를 작성하고, 컴파일하고, 실행한 후 동작하는 과정을 확인해 볼 것이다. 많은 언어들(예를 들어 C++, C#, Erlang, Groovy, Java, JavaScript, Python, R.. 더보기
개발자 동료에게 큰 혼란을 주는 테스트 작성 방법! (테스트 코드 함정) 단위 테스트는 영원히 계속되어야 합니다. 일단 작성되고 나면 단위 테스트는 코드베이스에 머물면서 기능 동작 검증과 회귀 검증의 역할을 수행합니다. 테스트가 코드베이스에 통합된 후에는 해당 테스트로 혼란을 일으킬 기회가 사라진 것처럼 보일 수 있습니다. 실제로는 그렇지 않습니다..! 똑딱거리는 시한폭탄과 같은 단위 테스트를 작성한다고 상상해 보세요. 처음에는 통과해 코드베이스에 들어가지만, 이는 가까이 있는 불행한 동료를 잡을 준비가 되어 있는 함정과도 같습니다. 알 수 없는 미래에 알 수 없는 이유로 테스트가 쉽게 깨지게 만들어, 복잡한 테스트 코드를 들여다 보던 동료들이 당신의 이름과 육두문자를 외치게 할 만한 테스트를 작성할 수도 있습니다. 특정 컴퓨터에서만 돌아가는 테스트를 짜라 "음, 내 컴퓨터에.. 더보기