본문 바로가기

전체 글

[도서] Code Complete - #2 오역 의역이 난무합니다. 주의해주세요 책의 일부 번역/요약 Chapter1 소프트웨어 구조 소프트웨어 구조란? 소프트웨어를 만드는 일은 복잡합니다. 지난 25년간 연구가들은 많은 과정들을 찾아내었습니다. 1.문제 파악 2.개선 요구 3.구조 설계 4.소프트웨어 설계, 하이레벨 디자인 5.세부 디자인 6.코딩과 디버깅 7.유닛 테스트 8.최종 테스트 9.완성 10.시스템 테스트 11. 유지 보수 당신이 형식적이지 않은 프로젝트를 해왔다면 이런 리스트가 필요할 수도 있다고 생각할 것입니다. 반대로 당신이 너무 형식적인 프로젝트에서 일했던 사람이라면 꼭 필요한 단계 리스트라고 알고 있을 것입니다. 프로세스를 형식적으로 규정할 것인가/말 것인가 사이에서 균형 잡기는 힘듭니다. 이 부분은 다음에 좀 더 논의해 봅.. 더보기
모션 그래픽스 에프터이팩트 시네마4D 유니티 더보기
[도서] Code Complete - #1 Steve McConnell / 2 Season Edition ###의역과 오역이 가득함#### 중심 키워드 "practice" -> "기술"로 번역 머리말 소프트웨어 엔진 기술와 평균적인 프로그래머들이 사용하는 기술 사이에는 큰 갭이 있다.(다른 엔진 기술들 보다) 좋은 기술이 널리 전파되도록 하는 것이 중요하다고 생각한다. - Fred Brooks 이 책을 시작하면서 가장 신경 썻던 부분은 이론과 실무, 그리고 한 분야의 교수, 그 외 프로그래머들이 사용하는 기술 들 사이의 간격을 좁히는 것이었다. 강력한 프로그래밍 기술들은 프로그래머 대중들에게 알려지지 않고 저널과 논문에 숨겨져 있다. 오늘날 최첨단 소프트웨어 개발 기술은 빠르게 발전해 왔지만, 다른 기술들은 그러지 못했다. 많은 프로그램들은 아직.. 더보기
프로세스와 쓰레드 프로세스란 컴퓨터에서 실행되는 프로그램 메모리 공간을 할당 받아서 프로그램을 수행 쓰레드란 프로세스 내에서 실행되는 단위 CPU의 코어에서 병렬 처리 (동시 처리) 하나의 코어에서 병렬되는 것 처럼 처리하는 것(but 순차적으로 하나의 코어가 열심히 일하는 것일 뿐) 더보기
퀵소트(Quick Sort) 간단하게 요약하자면 피폿을 기준으로 왼쪽에는 작은수를 오른쪽에는 큰 수를 배치하면서 정렬하는 알고리즘 "왼-작은수/오-큰수를 배치하려면 어떻게 해야할까요?" 방법 1. 피봇의 왼쪽 끝에서는 피봇보다 큰수를, 오른쪽 끝에서는 찾아서 스왑해주면 됩니다. 2. 왼쪽/오른쪽 찾는 위치가 반대가 될 경우 = 왼-작은수/오-큰수 배치가 이미 되었다는 의미 3. 피봇과 오른쪽 찾는 위치와 스왑해 줍니다. 4. 피봇은 알맞은 위치를 찾았지만 왼쪽/오른쪽 구역은 정렬이 되지 않았습니다. 해당 구역들을 1-3번 방법으로 반복해줍니다. ''일반 정렬 방법들보다 얼마나 빠를까요?' 장점 보통 O(n^2) 시간복잡도를 가지는 선택/삽입 정렬에 비해 평균적으로 빠릅니다. O(nlog2n) 의 시간복잡도를 가지고 있습니다. 우선 .. 더보기
해쉬 테이블 해쉬 테이블이란 키와 값으로 구성된 자료구조 순회로 값을 찾는 리스트 구조와 달리 키값을 해싱한 것만으로 값을 찾아낼 수 있어 효율적 원리 1. array형태의 버킷을 생성하고 2. 키값을 해싱하여 인덱스로 결정 3. 버킷의 인덱스에 값을 넣는다. 특징 1. vector의 경우 연속된 메모리 공간이 필요하기 때문에 capacity가 늘어나면 메모리 공간을 다시 잡는다. hash table의 capacity는 thumb of rule에 따름 (임의 설정이 가능한지는 아직 모름) hash table을 사용한 map 또한 해쉬 충돌이 잦을 경우 다시 메모리 공간을 잡는다. 2. 키값에 따라 주소값이 정해지기 때문에 같은 키값에 다른 값을 넣을 수 없다. 단점 - 해쉬 충돌 해쉬 함수에 다른 키값을 넣었는데 같.. 더보기
[Unity] Vector3는 Heap에 메모리 할당?? Vector3는 위치 설정을 위해 빈번하게 사용된다. gameObject.transform.position = new Vector3(0,0,0); gameObject에 위치를 할당할 때 new를 사용하는 것을 보고 힙에 할당하는 줄 알고 사용하기가 꺼려졌다. 계속 Vector3를 사용해도 되는 걸까? #1 의문 "왜 위치값을 넣어줄 때 new를 붙여서 Vector3를 생성하는 걸까. 이는 Heap에 할당되는 것인가 Stack에 할당되는 것인가" 일단 Vector3 정체는 구조체이다. https://3dmpengines.tistory.com/1566 해당 게시글도 같은 의문점을 가졌다. 요약하자면 Vector3는 구조체가 맞고 new로 생성 시, 스택에 메모리가 할당된다. 게시글의 실험 재확인차 Updat.. 더보기
Git 기본 커맨드 정리 # Git CMD 사용 # SVN 이용자 시점 * git을 이용하기 위해서는 .git 파일이 필요 (버젼관리 정보가 들어있음) * 다른 사람의 github에 push하기 위해서는 permission이 필요함 (permission 추가 or 사용자 변경) * 사용자 계정 변경 : 제어판->사용자계정->window 자격 증명 관리 -> https://github.com 에서 관리 Repository 생성 1. GitHub 에서 Repository 생성 2. 트래킹 시작하고 싶은 폴더에 .git 생성 git init 3. Repository에 연결 git remote add origin [repository 주소] Push 1. 트래킹 상태 확인하기 git status // 파일 트래킹 여부 확인 가능 (빨강.. 더보기