목록분류 전체보기 (140)
배고픈 개발자 이야기

옵저버(특정 목록의 변화 관찰)로 객체에 등록하여 객체가 직접 통지하도록 하는 패턴 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. + 발행/구독 모델 1) 기본구성 어떤 상태를 관리하는 Subject 객체(상태머신,생산자,Observable)가 있고 , 이 객체에서 일어나는 상태 변화에 따라서 해당 이벤트를 받길 원하는 옵저버(관찰자,소비자)들은 매니져 객체에 자신을 등록 한다 그 후에, Subject 객체에서 어떤 상태가 변경 되었을 때 , 자신에게 등록된 옵저버들에게 이벤트를 notify 해주는게 옵저버 패턴의 주요 골자이며, Subject 객체는 관찰자들에 대해서 유연하게 커플링 되어 있게 된다. 즉 매니저 객체가 소비자들에 대해서 정확한 정보를 알 필요가 없이, 소비자들이 알아서 Sub..

캡슐화를 통해 코드의 중복이 없이 재사용 가능하게 하는 패턴 스트래티지를 활용하여 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘 변경할 수 있다. 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 파일의 메타데이터 중 일부를 보관하고 있는 일..