Legacy Code 와 효율적으로 일하기 # 다음과 같은 이야기를 얼마나 들어봤는가? - 코드가 거지같은데 이 새로운 기능을 어떻게 추가하지? - 이 파일 바꾸는것은 위험부담이 큰데? - X, Y, Z 에 dependency 가 있는데 어떻게 이 class 를 test 하지? - 니가 원하는데로 바꾸기에는 시간이 충분치 않아 - 이 코드는 대체 뭘 하는거지?! - 이건 너무하다, 이건 더 이상 나아질 수 없을꺼라 생각해. # Legacy 코드는 무엇인가? 다른 사람이 짠 코드를 받는 것이다. test 가 되지 않은 코드이다. # 모든 변화는 risk 이다. code 가 제대로 동작하고 있다면 굳이 바꿀 이유가 없다. 특히나 test 가 되지 않는 코드라면.. 그러나 bug fix 를 한다던지, new feature 를 추가한다던지 할 때는 변화.. 2022. 12. 26. [애자일] Scrum 개발방법론 - 애자일 소프트웨어 공학 중 하나. - 원칙 개발 주기마다 적용할 기능이나 개선에 대한 목록 작성 (Backlog 작성) 신규 기능, 기존 로직 개선점 ( 즉 할일 ) 등에 우선 순위 부여 개발 주기는 30일 정도로 조절하고, 개발 주기마다 실제 동작하는 결과 제공 일일 15분 정도의 회의 항상 팀 단위로 사고 원할한 의사소통 - 추가 사항 조직을 작게 만들며, 자기조직적인 팀(스스로 지원해서 조직되는 팀)이면 더 좋음. 개발 사항은 1~2시간 단위로 가능한 작은 단위로 만드는 것이 좋음. Sprint 결과를 리포트, 회고 함. - Scrum 팀 구성원의 추구 가치 확약 : 약속한 것은 확실히 실현한다. 전념 : 확약한 것에 전념. 정직 : 불리한 것도 숨기지 않는다. 존중 : 다른 사람에게 경의를 표.. 2021. 1. 24. Open Source Software License 들 간단 정리 GPL ( General Public License ) 많은 Open Source 가 채택하고 있는 라이센스. 자유로운 사용, 복제, 배포 및 수정 저작권 표시, 보증책임이 없다는 표시, GPL 명시 소프트웨어 수정 및 링크(static, dynamic 모두) 시 모든 코드를 GPL 에 의해 공개 공개 범위는 GPL 코드와 연결된 모든 코드 특허 보복조항 ( 특허를 구현한 프로그램을 GPL 로 배포할 때는 GPL 조건을 준수하는 이용자에게는 로열티를 받을 수 없으며, 제 3자의 특허인 경우에도 특허권자아가 Royalty-Free 형태의 라이센스를 제공해야만 해당 특허 기술을 구현한 프로그램을 GPL 로 배포하는 것이 가능 ) GPL 코드 일부라도 사용하게 되면 그 프로그램은 GPL 이 된다. GPL 을 .. 2020. 12. 25. [git] Git Prune 에 대해 알아보자 [git] Git Prune 에 대해 알아보자 https://www.atlassian.com/git/tutorials/git-prune -git pull (fetch) 과정에서 ref lock 에러를 마딱뜨렸는데, 이 때 해결방법중 하나가 'git remote prune origin' 을 수행하는 것이라 한다.그래서 이 녀석의 정체에 대해 알아보고자 한다.$ git remote prune origin -git prune 은 unreachable 한 git object 들을 "local" 에서 clean 하는 작업이다.unreachable 이란 git tree 에 의해 참조되지 않는 gc 대상이 되는 dangling refs 들이다. -git prune 은 보통 직접 수행되지 않는다.이 녀석은 git gc.. 2020. 3. 6. [git] git pull error : remote ref is at xxx but yyy expected [git] git pull error : remote ref is at xxx but yyy expected -git pull 을 수행하다보면 종종 "git pull error : remote ref is at xxx but yyy expected" 의 에러를 내뱉으며 pull 이 실패하곤 한다.xxx, yyy 는 hash 값이고, 실상 저 에러는 git fetch 과정에서 발생한다.그런데 이 에러가 영구적이지 않고, 에러 발생 이후 다시 pull 을 시도하면 다시 잘 작동한다... -이 에러가 발생하는 이유 중 하나는 누군가가 repository 의 history 를 git push --force 로 해서 tree 를 망가뜨렸기 때문이라고 한다. (stackoverflow 의 답변 참고) -또 다른 이.. 2020. 3. 5. [git] fetch 하기 & pull 하기 [git] fetch 하기 & pull 하기 * fetch 하기 $ git fetch [remoteName]$ git fetch origin # 일반적으로 remoteName 은 origin * pull 하기 ( fetch & merge ) $ git pull [remoteName] [refSpec]$ git pull origin fix/issue_1 # 일반적으로 remoteName 은 origin, refSpec 은 branchName git fetch, git fetch origin, git fetch remoteName, git pull, git pull origin, git pull remoteName, [git] fetch 하기 & pull 하기 2020. 3. 4. [git] 수정 사항 되돌리기 ( stage to unstage, reset modifed ) [git] 수정 사항 되돌리기 ( stage to unstage, reset modifed ) * Staged 를 Unstage 로 하기-$ git reset $ git reset HEAD $ git reset --mixed HEAD -자세한 내용과 옵션은 따로 조사를 해보자!참고로 --hard option 을 사용하면 modified 내역도 사라져버린다. * Modified 를 되돌리기 -$ git checkout -- -checkout 은 branch 관련 작업에도 사용되므로 관련해서는 따로 조사를 해보자. git checkout, git reset HEAD, git stage to unstage, reset modifed, reset modifed ), stage to unstage, [git] 수.. 2020. 3. 3. [regex] Possessive quantifier 에 대해 알아보자. [regex] Possessive quantifier 에 대해 알아보자. https://chortle.ccsu.edu/FiniteAutomata/Section09/sect09_21.html -regex 의 quantifier 는 greedy(by default), reluctant(or lazy), possessive 중 하나이다.possessive 는 다음과 같이 일한다. 1. first unmatched char 부터 match 를 시작한다.2. 왼쪽부터 오른쪽으로 매칭 시작한다.3. 가능한 많이 matching 시킨다.4. char 가 matching 되면 quantifier 를 유지하고, 나머지 regex 의 matching 을 무시한다. (back-tracking 하지 않는다.) -quantif.. 2020. 2. 29. [regex] 정규식 성능에 대해 알아보자 정규식 성능에 대해 알아보자 http://egloos.zum.com/sword33/v/7294056 -정규식은 어떻게 사용하느냐에 따라 성능이 엄청나게 요구될 수 있다.다음 네가지를 유의하면 성능을 잘 뽑을 수 있다. 1. back tracking 최소화2. 정확히 작성3. 위치지정자 사용 (^, $)4. 탐욕적 수량자보다는 게으른 수량자 사용 -https://regex101.com위 사이트는 정규식을 테스트해볼 수 있다.이에 더해 정규식 판별 시간과 step수도 체크할 수 있고, debug 도 할 수 있어 아주 유용한 사이트. -back tracking 은 정규식이 왼쪽에서 오른쪽으로 탐색하는데, 100% 매칭되지 않으면 다시 돌아가서 다시 매칭을 시도하는 것을 이야기한다. -정규식은 target 이 .. 2020. 2. 28. 반응형 이전 1 2 3 4 ··· 17 다음