본문 바로가기

나쁜 프로그래머가 되는 18가지 방법 나쁜 프로그래머가 되는 18가지 방법 소프트웨어 개발자는 끊임없이 변화하면서 성장한다. 스스로 길을 잘 찾아서 성장하는 경우도 있고, 좋은 환경에서 개발을 하다 보니 자연스럽게 실력이 향상되기도 한다. 하지만 열악한 환경에서 열심히 일만하다가 개발자로서의 실력은 점점 잃어가는 경우도 있다. 아무리 사회가 어떻고, 회사가 열악하다고 불평을 해봤자 남는 것은 자신의 개발자로서의 실력밖에 없다. 이번 글에서 나쁜 프로그래머가되는 18가지 방법을 소개한다. 물론 본의 아니게 주변의 환경이 나를 이렇게내모는 경우도 있지만 이를 반대로 해보는 노력을 해보자. 내가 대단한 사람이라서 이런 얘기를 하는 것은 결코 아니다. 나도 독자들과 똑같은 개발자로서 18가지 중에서 잘 안되는 항목도 있다. 단지 20년 넘게 개발을.. 더보기
[프로그래머 삶] 개발자는 왜 야근을 해서 소중한 시간을 버리는가? ‘프로그래머 삶’ 홈페이지에 게재된 글을 편집한 뒤 모비인사이드에서 한 번 더 소개합니다. 이미지: shutterstock 2012년에 웹서핑을 하다가 우연히 카페인에 중독된 미국 개발자 ‘러셀 볼’ 블로그에 들어가게 됐습니다. 본인의 경험을 바탕으로 야근에 대한 생각을 적어두었더군요. 4년 전 글이지만, 오늘날 모습에 대입해도 공감되는 내용입니다. 번역을 매우 정확하게 하는 편이 아니라 요약과 의역이 많은데요. 이 점 감안해서 봐주시면 감사하겠습니다카페인에 중독된 러셀 볼이란 개발자분의 글(개발자 야근에 대해서) Caffeinated Coder – A Grande, Triple Shot, Non-Fat Core Dump by Russell Ball저는 일주일 40시간 근무가 당연함에도, 일주일에 60~.. 더보기
[자바스크립트]타이머 설정 setTimeout(function(){ 변경사항 }, 3000); //(function(){ 변경사항}, 시간) function()함수가 3초후에 실행된다. 즉 3초후에 변경할 내용을 function함수 안에 작성하면 된다. 더보기
09. 환경파일, 보안관련 파일 관리 ※ Ignore 우리가 DB에 접속할 때 id와 pw를 알고 있어야 한다. 허나 이런 DB의 id와 pw는 외부에 노출이 되면 안된다. 하지만 이러한 환경설정을 해놓은 파일은 반드시 필요하다. 그래서 Github에 올릴때 Ignore기능을 이용하면 Github에 올라가지 않는다. (환경파일 마우스 오른쪽 클릭 후 ignore클릭) 그리고 따로 템플릿 파일을 배포하여 협업시 다른 사용자가 자신의 환경에 맞게 설정할 수 있도록 도움을 줄 수 있도록 한다. 더보기
08. 태그 ※ 태그란? 버전들 안에서도 의미있는 기념할만한 버전들이 있다. 그러한 것들을 별도로 관리하고 표시해 줘야한다. 이러한 것을 해주는 것이 태그이다. 태그를 이용해서 그 태그부터 시작하는 브랜치를 만들 수 도 있고 원격 저장소에도 push를 할때 같이 태그를 저장 시킬 수 있다. 원격 저장소로 푸시할때 원격저장소로 tag를 올릴때는 push all tag를 체크해줘야 된다. (git에서는 태그를 모든사람을 꼭 공유할 필요가 없다고 생각하기 때문에 태그를 올리려면 따로 체크를 해주어야 된다.) 그리고 github에서는 tag를 releases란 메뉴에서 관리 할 수 있다. 더보기
07. STASH stash 1. (안전한 곳에) 넣어 두다 2. 챙겨 둔 양 무엇을 안전하게 넣어둘까?? 커밋하지 않은 아직 끝나지 않은 작업을 안전한 곳에 넣어둔다! ex) 아직 커밋하지 않은 내용을 임시로 저장해 두는 기능 예를들어 코딩을 하다 다른 작업을 급하게 먼저 처리해야 된다고 할때 내가 작업하던 코딩이 급하게 먼저 처리할 내용에 영향을 줄 수 있으므로 내가 작업하던 코딩을 임시로 저장해 두고 소스 코드를 최신 버전으로 rollback 시킨 후 작업한다. 급하게 처리할 작업이 완료되면 저장된 stash를 다시 적용하여 기존에 하던 작업을 다시 시작하면 된다. 더보기
06. 비교, 병합 외부 도구 연결 소스트리에서 기본적으로 지원하는 비교,병합 툴은 보기가 너무 불편하다. 그래서 우리는 외부의 비교,병합 툴을 연결하여 사용 할 수 있는데 Git에서는 이러한 외부 툴을 diff라고 한다. 이러한 diff 의 종류로는 SourceGear Diffmerge나 beyond compare가 있는데 사용자의상황에 맞게 잘 선택해서 쓰자. ※ diff연결 tool -> option -> diff 에서 External Diff Tool과 Merge Tool을 설정해준다. ※ diff툴의 사용 충돌이 일어났을때 충돌이난 부분을 오른쪽 클릭하여 Resolve Confilicts -> Launch External Merge Tool 클릭을 하면 위에서 설정한 diff가 켜진다. merge 툴에서는 base, local, .. 더보기
05. 협업 기존의 프로젝트를 다른사람과 협업하려할때 github에 있는 프로젝트를 다운받아야 된다. ※ 원격 저장소에 있는 프로젝트 로컬로 다운로드 받기(Clone/복제) ※ 협업시 소스를 수정하기 전에 해야할 사전작업 협업을 하는 사람들은 기본적으로 작업을 하기전에 원격저장소에 새로운 버전이 올라가 있는지 확인해야된다. 원격저장소의 최선버전과 내가 작업하는 곳의 버전이 같아야 충돌을 최소화 할 수 있다. 협업시 작업 시작전 Pull을 하자! (Pull-원격저장소에서 로컬저장소로 내용을 가저오는 행위) 만약 작업전 Pull을 안하고 작업을 한 후 Push를 하면 git에서 오류를 내서 Pull을 한 후 Push를 하라고 유도를 한다. 물론 pull을하면 자동으로 병합을 해준다. 하지만 충돌이 일어나면 사용자가 직접.. 더보기
04. 원격저장소 ※ 원격저장소의 종류 https://github.com/ (깃허브) https://about.gitlab.com/ (깃랩) ※ 원격저장소 만들기(github 기준) 1.github 페이지에서 원격저장소 만들기 2.소스트리에서 원격저장소와 연결하기 3.원격저장소와 동기화 시키기 Push기능을 이용한다. (Push - 로컬 저장소의 내용을 원격저장소로 밀어내는 행위) 더보기
03. 브랜치(Branch) ※ 브랜치란? 소프트웨어를 개발할 때에 개발자들은 동일한 소스코드를 함께 공유하고 다루게 됩니다. 동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고 또 다른 개발자는 새로운 기능을 만들어 내기도 하죠. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없습니다. 이럴 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 '브랜치(Branch)' 입니다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있지요. 이렇게 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들어 낼 수 있습니다. ※ 브랜치 만들기 ※ 브랜치 병합(Me.. 더보기
02. 되돌리기 ※ WorkingCopy Index Repository 새로 만든 파일들은 최초의 Commit 전에는 Git에서 관리해주지 않는다. 새 파일의 내용이 변하던 변하지 않던 그 파일은 그저 새 파일로만 간주 될 뿐이다. 소스 트리에서 Commit할때 필요한 개념 *파일을 Commit할 때의 순서와 개념 Working Copy(변경사항이 있는 파일들) -> Add(Index, Staging Area에 추가하는 행위) -> Commit(Index 혹은 Stage Area에 추가되어 있는 파일들을 Repository에 저장하는 행위) *소스 트리에서는 workging copy에서 여러파일을 한꺼번에 add시켜 commit하면 그 파일들이 하나의 Discription으로 남는다. 이런식으로 어떤 기능을 만들때 여러.. 더보기
01-3. 버전 만들기(commit) ※ Git과 SVN에서의 커밋의 차이점 - 내가 그동안 써오던 SVN은 커밋을 하면 중앙Repository(서버)에 저장이 되었다. 하지만 Git에서 커밋은 중앙Repository가 아닌 내 PC 즉 로컬에 새 버전을 저장시키는 것이다. 그렇기 때문에 인터넷이 안되거나 서버에 접속이 안되어 있어도 로컬에서 버전관리를 할 수 있고 작업이 가능하다. Git에서는 SVN의 Commit과 Update의 개념은 Push와 Pull이다.(서버에서 버전관리) 더보기