목록분류 전체보기 (139)
배고픈 개발자 이야기
캡슐화를 통해 코드의 중복이 없이 재사용 가능하게 하는 패턴 스트래티지를 활용하여 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘 변경할 수 있다. ex1) 추상 동물 클래스와 일반적인 방법으로 상속받는 Eagle / Tiger 객체 - 속성 : cry / display ex1)에서 추가 속성으로 fly 메소드를 추가하면 추상 클래스를 상속 받는 객체들은 모두 속성을 호출할 수 있다. 하지마 fly는 모든 Animal의 공톡 속성이 아니므로 문제가 있고 - 이를 구분해 주어야 한다. ex2) 추가 속성의 공통 속성 문제를 해결하기 위해 fly 메소드를 인터페이스로 추가 fly를 객체마다 따로 구분해주기 위해 인터페이스로 구현하였지만 fly 인터페이스를 객체에 따라 구분해 주어야 할 필요성이 생기게 되..
Chapter23 디버깅 디버깅은 소프트웨어 개발의 성공과 실패를 좌우한다. 가장 좋은 접근 방법은 결함을 처음부터 피하기 위해 이 책에서 소개하고 있는 다른 기법들을 사용하는 것이다. 하지만 디버깅 기술을 향상시키는 데 시간을 투자할 가치가 있다. 왜냐하면 디버깅을 잘하는 사람과 못하는 사람 간의 수행 능력이 적어도 10배 정도 차이가 나기 때문이다. 오류를 찾고 수정하는 체계적인 접근 방법은 성공에 매우 중요하다. 각 테스트가 한 걸음 나아갈 수 있도록 디버깅에 초점을 맞춘다. 과학적인 디버깅 방법을 사용하라. 문제를 수정하기 전에 문제의 원인을 이해하라. 오류의 원인에 대해서 임의로 추측하고 수정하면, 프로그램은 수정을 시작했을 때보다 더 나쁜 상태가 될 것이다. 컴파일러의 경고를 가장 까다로운 수..
Chapter1. 소프트웨어 구현으로의 초대 요구사항, 아키텍처 - 구현을 효율적으로 하기 위해 선행됨 구현 시스템 테스트 - 구현이 정확하게 수행되는지 검증 Chapter2. 소프트웨어 개발의 이해를 돕기 위한 비유 비유는 모든 사람이 이해 할 수 있고 불필요한 실수를 줄여 줄 수 있다. 답을 어디서 찾을지가 아니라 어떻게 찾을지 알 수 있다. 편지를 쓰는것?(작은 프로젝트, 씨를 심고 곡물을 기르는것?(작은 부분을 추가 - 오류 최소화 ) 골격(더미 클래스) -> 근육과 피부(실질적 클래스) 발견적 학습, 알고리즘x Chapter3. 준비는 철저하게 : 선행 조건 아키텍처와 설계, 프로젝트 계획 수립이 성공적인 프로젝트에 필요함, 위험 절감 논리적 설득 - 프로젝트의 규모에 따른 계획수립의 중요성 :..
Object Oriented Programming 객체 지향 프로그래밍. 저도 잘 모르고 너무 거대한 부분이라서 넣을지 말지 많은 고민을 했습니다만, 면접에서 이 정도 이야기 하면 되지 않을까?하는 생각에 조심스레 적어봤습니다. 객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨터에 있었다. 컴퓨터가 사고하는대로 프로그래밍을 하는 것이다. 하지만 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다. 현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다. 이것을 추상화라 한다. OOP로 코드를 작성하면 이미 작성한 코드에 대..
Implementation Page Cache는 메모리 관리할 때 필요한건 올려놓고 필요없는건 쫒아냄 - 4Kbyte Buffer Cache 운영체제가 파일 I/O를 할 때 디스크에서 전달받은 내용을 읽어놓고 카피를 하여 전달함 - 512byte Memory-Mapped (I/O or FILE) - 프로세스 주소공간 중 일부를 파일에 Mapping을 해놓음 : 처음에만 system call 그 다음부턴 system call(운영체제 도움)없이 입출력 read(), write()는 운영체제 도움을 받아야함 I/O는 Buffer Cache를 통과해야함 자신이 CPU를 갖고 있으면서 직접 접근함 -mmap
Disk에 파일을 저장하는 3가지 방법 1.Contiguous Allocation 하나의 파일이 연속적으로 저장되는 방법 단점 : 중간중간 빈 블럭이 생길 수 있음(external fragmentation) -낭비 /파일 크기 키우는데 재약이 있음(File grow) 장점 : 빠른 I/O가 가능함(DISK 헤드가 이동하는 시간이 대부분) /한번의 SEEK/rotation로 많은 바이트 transfer Realtime file 용으로, 또는 이미 run 중이던 process의 swapping 용으로 좋음 Direct access(=random access) 가능(주소 참조할 필요없이 +offset으로 접근) Linked Allocation 블럭마다 연결되어 있음 장점 : External fragment가 ..
File 일반적으로 비휘발성의 보조기억장치에 저장 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해 줌 Operation - create, read, write, reposition (lseek), delete, open, close등 File attribute(혹은 파일의 metadata) 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들 파일 이름, 유형, 저장된 위치, 파일 사이즈 접근 권한 (읽기/쓰기/실행), 시간 (생성/변경/사용), 소유자 등 File system 운영체제에서 파일을 관리하는 부분 파일 및 파일의 메타데이터, 디렉토리 정보 등을 관리 파일의 저장 방법 결정 파일 보호 등 Directory 파일의 메타데이터 중 일부를 보관하고 있는 일..
8장 라우팅 프로토콜과의 한판 다이나믹 라우팅 프로토콜 : 라우터가 알아서 길을 찾아주는 프로토콜 -RIP(Routing Information Protocol) - memory 적게 사용 목적지 찾아가는 방법 네트워크 몇 번 거쳐가는가(Hop count) -Hop count만 고려하기 때문에 네트워크 속도, 신뢰도, 회선 로드 고려되지 않음 -Hop 16개부터 unreachable이라 커다란 네트워크에 사용불가 그래도 사용하는 이유 소규모 네트워크상에서 효율 좋음 라우터 메모리 적게 차지함 구성 간편 표준 라우팅 프로토콜 디폴트 4, 최대 6개 경로까지 로드 밸런싱 가능함 4개 모두 같은 홉카운트일 경우 패킷을 분산하여 보냄 전용선을 설치할 수 없을 때 만드는 구성이 Back to Back구성으로 라우터..