소프트웨어 엔지니어링
-
컴퓨터 공학에 접근하는 방법소프트웨어 엔지니어링 2019. 3. 11. 11:05
학부 시절에 학교에서 연 세미나에 참석 한 적이 있다. 이 세미나에선 실리콘밸리에서 일하는 한국인 엔지니어들이 와서 자신의 경험과 취업 경로에 대해 이야기 해 주었다. 강연자 중 한 분이 AAFMG (Apple, Amazon, Facebook, Microsoft, Google)중 하나에 재직중이셨고, 그 때문에 나도 세미나 시작 전 부터 기대하고 있었다. 하지만 그 분의 강연 후 나는 많이 좌절하고 말았다. 그 분은 어려서부터 알고리즘 대회에 나가 수상한 경력이 있었고, 국내 최고 대학 중 하나에 진학하셨으며 대학원 진학 후 어떤 컨퍼런스에서 AAFMG에게 면접 제의를 받아 입사 한 경우였다. 전부 나와는 동떨어진 이야기였다. 그 분은 알고리즘을 정말 잘하셨기 때문에 AAFMG 면접을 통과하는 것은 당연..
-
git 명령어: git branch소프트웨어 개발 툴 2019. 2. 1. 14:53
지난번 포스트에서 git cherry-pick에 대하여 설명했다. cherry-pick에 대한 포스트를 작성 한 후 곰곰히 생각해보니 git에 대해 조금 더 이야기 하는 것도 나쁘지않을 것 같아 git기본부터 포스팅 해 보려고 한다. 어쩐지 순서가 뒤죽박죽이지만 개의치 않기로 하자. 오늘은 브랜치에 대해 설명 해 보도록 하겠다. 혹시 깃허브를 이용하고 깃허브 master branch, 깃허브 merge, 깃허브 checkout, 깃허브 branch 삭제등등 깃허브와 관련되어 모르는게 있어더라도 이 블로그를 통해서 배울 수 있다. 깃허브도 자체로는 깃을 사용하기 때문이다. 이 포스트에서도 깃허브 리파지토리를 사용한다. 들어가기 전에실습을 할 예정이라면 깃 리파지토리를 미리 준비하라. 만약에 실습은 하고 싶..
-
git 명령어 : git cherry-pick소프트웨어 개발 툴 2019. 1. 30. 16:31
git을 이용해 코드 관리를 하다보면 커밋을 다른 브랜치에 잘못 하거나, 요구사항이 바뀌어 필요 없는 커밋이 생기거나, 코드 의존성(dependency) 때문에 다른 사람의 커밋 중 일부를 가져와야 하는 경우가 종종 생긴다. 그런 경우 git rebase나 git cherry-pick을 많이 사용하는데 오늘은 그 중에서 cherry-pick에 대해 설명 할 것이다. git cherry-pickgit cherry-pick이란 다른 브랜치에 있는 커밋을 선택적으로 내 브랜치에 적용시킬 때 사용하는 명령어이다. 명령어는 다음과 같다.git cherry-pick ...예를 들어 설명 하기 위해 다음의 그림을 보자.위 처럼 현재 당신의 코드는 X 브랜치에 있고 (git checkout X)라는 뜻 당신은 브랜치 ..
-
깃허브 오픈소스 프로젝트에 참여하기소프트웨어 개발 툴 2019. 1. 27. 19:01
오늘은 이 포스트를 통해 깃허브에서 오픈소스 프로젝트 참여하는 법을 설명하고자 한다. 깃허브의 사용법을 알고 있어도 오픈소스 프로젝트에 참여하는 것은 굉장히 어렵게 다가 올 때가 많다. 또 어떤 오픈소스 프로젝트에 참여하려고 할 때 어디서부터 시작해야 할 지 모르겠다고 생각하는 사람들도 많을 것이다. 그 이유는 오픈소스 프로젝트에 참여할 때 어떤 룰을 따라야 하기 때문이다. 그 룰을 따르지 않으면 내가 커밋한 코드는 거부되고 말 것이다. 그런 불상사가 없도록 지금부터 오픈소스 프로젝트에 참여 시 지켜야 할 것들과 참여하는 방법을 소개하고자 한다. 깃허브 오픈소스에 참여하기 시작하기에 앞서 git이나 Github에 대해 잘 알지 못하는 독자들은 git과 github튜토리얼을 먼저 진행하길 바란다.깃허브 F..
-
JMap, JHat으로 Heap Dump 분석소프트웨어 개발 툴 2019. 1. 27. 13:47
프로덕션에서 돌아가는 프로그램이라면 그것이 어떤 종류이건간에 Out of Memory 또는 가비지 컬렉터(GC) Out of Memory의 가능성을 염두 해 두어야 한다. 어떤 프로그램이 테스팅 또는 스테이징 환경에서 문제 없이 돌아간다 하더라도 프로덕션에서는 다른 행동을 보일 수 있다. 엔지니어들이 제대로 테스팅을 하지 않아서가 아니라 프로덕션의 로드(load)가 다르고 프로덕션에서 사용하는 데이터가 테스팅 환경의 데이터와 다르고, 또 유저들이 꼭 엔지니어들이 의도한 대로 프로그램을 사용하지 않기 때문이다. 자바는 가비지 컬렉터(Garbage Collector) 덕분에 엔지니어가 일일히 메모리 관리를 하지 않아도 되지만, 그렇다고 Out of Memeory에러에서 자유롭다고 할 수 없다. 이렇게 프로그..
-
깃과 깃허브 사용법소프트웨어 개발 툴 2019. 1. 23. 15:19
소프트웨어 엔지니어링의 세계에 살다보면 사람들이 깃(git)이나 깃허브(github)에 대해 이야기 하는 것을 종종 듣게 된다. 오픈소스 프로젝트를 구할 때도 깃허브에서 많이들 시작한다. 깃과 깃허브을 같은 것으로 생각하는 사람들도 간혹 있는데, 이 두 툴은 매우 다른 툴이다. git은 팀 내에서 소스코드 관리를 위한 툴이고 github은 'git'이라는 소스코드 관리 툴을 이용해 오픈 소스 프로젝트를 위한 플랫폼을 만든 것이다. 따라서 자신의 프로젝트를 공개하고 싶은 누구나 github에 소스코드를 올릴 수 있고, 또 누구나 올려진 소스코드에 참여 할 수 있다. 오늘은 이 포스트를 통해서 깃과 깃허브의 사용 방법을 알아보도록 하겠다. git을 왜 알아야 할까?현업에서 반드시 사용한다. git이 아니라면..