본문 바로가기

공부

(39)
끊임없는 학습 - 프로그래머의 길, 멘토에게 묻다 드디어 마지막 패턴. 이번에 읽은 챕터는 '끊임없는 학습'과 이 책의 마지막 챕터인 '학습 과정의 구성' 이다. 개인적으로 지난 챕터인 '정확한 자기 평가'는 집중이 잘 안됬는데, 이번 두 챕터는 몰입해서 읽었던것 같다. 소프트웨어 장인이 되기 위하여 어떻게 학습해야 할 것인가에 대한 생각보다 깊은 내용을 들을 수 있었다. 이번에 읽은 패턴 능력의 폭을 넓혀라 연습, 연습, 또 연습 부숴도 괜찮은 장난감 소스를 활용하라 일하면서 성찰하라 배운 것을 기록하라 배운 것을 공유하라 피드백 루프를 만들어라 실패하는 법을 배워라 독서 목록 꾸준히 읽어라 고전을 공부하라 더 깊이 파고들어라 익숙한 도구들 연습, 연습, 또 연습 나를 포함한 대부분의 사람들은 한 번의 학습 과정을 거치면 다시 그 과정을 다시 보려고 ..
정확한 자기 평가 - 프로그래머의 길, 멘토에게 묻다 이번 챕터에서는 지난번에 쓴 '가장 뒤떨어진 이가 되라' 패턴과 함께 '멘토를 찾아라', '마음 맞는 사람들', '팔꿈치를 맞대고', '바닥을 쓸어라'등의 패턴을 소개해주고 있다. 겸손은 성공적인 견습과정의 토대 중 하나다. 야망과 겸손이 결합될 때 겸손은 당신을 집중하게 해주며 올바른 방향으로 전진할 수 있게 해준다. 개발자로 일하면서 겸손함을 갖게 하고, 정확한 자기 평가를 하게 하는 방법은 바로 뛰어난 개발자들을 찾는 일 같다. 정말 잘하는 개발자들의 이야기를 듣고, 그들의 코드를 보다 보면 내가 얼마나 부족하지 깨닫게 된다. 그리고 그들과 함께 하는 방법이 가장 빠르게 배울 수 있는 왕도인 것 같다. 사실 방법은 알고, 다 아는 내용이지만 이러한 패턴들을 실천하기 위한 동기부여가 제대로 안되는 듯..
가장 뒤떨어진 이가 되라 - 프로그래머의 길, 멘토에게 묻다 "합기도를 마스터 하려면 얼마나 걸리나요?" 수련 지망생이 묻는다. 여기에 대한 훌륭한 대답은 이것 뿐이다. "자네 얼마나 오래 살 것 같나?" - 조지 레너드, "Mastery" 긴 여정 소프트웨어 장인이 되고 싶어 하는 사람들은 길게 생각해야 한다. 불씨가 약해지긴 했으나, 최근 몇년간 개발자가 돈을 많이 번다는 이야기를 듣고 어떻게든 단기간에 개발자가 되어 많은 돈을 받으며 놀고 먹을 생각을 하는 것으로 보이는 사람들이 좀 보였다. 이런 마인드가 잘못됬다는 것은 아니지만, 그런 생각을 가지고 있으면 개발자로 좋은 대우 받기가 힘든게 현실이고, 이 책을 읽는 사람들이라면 이런 생각보다는 좋은 개발자가 되고싶어 할 것이다. 좋은 개발자는 단시간에 만들어지지 않는다. 코테보다는 알고리즘 자체에 집중하고,..
깊은 쪽으로 - 프로그래머의 길, 멘토에게 묻다 무지를 드러내라 상대방이 듣고 싶어 하는 이야기를 해주기 위해 무리하게 이야기 하지 말고, 솔직하게 모르는건 모른다고 이야기해라. 그것이 장기적으로 서로 윈윈하는 방법이다. 지금의 탁월한 모습을 보여주려고 하기 보다는 성장하는 모습을 보여줘라. 이 때, 내가 모르는 것을 효과적으로 표현하고, 성장할 수 있는 태도를 보여주는 가장 효과적인 방법은 질문을 잘 하는 것이다. 장인에게 가장 중요한 특성 중 하나는 학습하는 능력, 즉 무지의 영역을 파악해서 이 영역을 줄이려 애쓰는 것이다. 일부로 흰 띠를 매고 내가 무지를 드러낼 수 있는 영역에 의식적으로 발을 들이는 것이 소프트웨어 장인이 되기 위한 매우 중요한 습관이다. 개발을 진행하며 나는 내 머리를 쥐어짜며 고민하는 것 보다는 적당히 고민한 후 사람들에게..
소프트웨어 장인정신 - 프로그래머의 길, 멘토에게 묻다 책 프로그래머의 길, 멘토에게 묻다를 읽고 조금씩 정리한 게시글입니다. 우리는 동작하는 것을 넘어서 잘 짜인 소프트웨어에, (Not only working software, but also well-crafted software) 변화에 대응할 뿐 아니라 지속적으로 가치를 더하는 일에, (Not only responding to change, but also steadily adding value) 개인들 그리고 그 사이의 상호작용에 더해서 전문가들의 공동체에, (Not only individuals and interactions, but also a community of professionals) 고객과의 공동 작업 뿐 아니라 생산적인 파트너십에 가치를 둔다. (Not only customer col..
운영체제 - 분산 운영체제 정리 (방송통신대학교 운영체제) 분산 운영체제의 개요 분산 시스템 메모리나 클럭을 물리적으로 공유하지 않은 프로세서들의 집합 네트워크로 연결되어 상호 협력 가능 네트워크를 중심으로 여러 프로세스(서버, 클라이언트 ,자원 등)이 연결이 되어있다. 서버: 자원을 제공하는 쪽 클라이언트: 자원을 사용하는 쪽 분산 시스템의 목적 자원 공유 연산속도 향상 신뢰성 향상 통신의 용이성 자원 공유 연결된 다른 사이트의 자원을 사용 예: 원격 사이트의 파일 공유, 원격 사이트에서의 프린팅, 분산 DB의 정보 처리 등 연산속도 향상 분할이 가능한 작업을 분산 시스템의 여러 사이트에 분산시켜 동시 처리 부하 공유를 통해 과부하 해소 및 전체 처리속도 향상 신뢰성 향상 일부 사이트에서 장애가 발생하더라도 전체 시스템의 동작이 멈추지 않음 장애 검출, 장애 ..
운영체제 - 가상메모리 정리 (방송통신대학교 운영체제) 가상 메모리의 개념 메모리 크기보다 더 큰 기억공간이 필요한 프로세스를 실행할 수 있게 하는 방법 → 한번에 전체 프로세스의 일부분만을 실행함 가상메모리 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분리 가상주소와 실주소 공간으로 분리 가상주소공간(V): 실제 프로세스의 가상주소 공간 실주소공간(R): 실제 메모리의 주소 공간 CPU에서는 실주소공간이 필요함. 메모리의 가상주소를 실주소로 변환하는 과정이 필요 사상 프로세스 실행을 위해 가상주소를 실주소로 변환 동적 주소 변환(DAT): 프로세스가 실행되는 동안 사상 인위적 연속성: 가상주소 공간에서는 연속이지만, 실주소 공간에서도 연속일 필요는 없음 블록 단위 주소 변환 블록 단위로 분류하여 각 블록이 메모리의 어디에 위치하는지를 관리 블..
운영체제 - 메모리관리 정리 (방송통신대학교 운영체제) 프로세스와 메모리 프로세스의 동작 프로그램 카운터를 참조하여 메모리로부터 수행될 명령을 읽어 CPU의 해당 명령을 수행 프로그램은 보조기억장치에 파일 단위로 있다가, 실제 수행시 메모리에 로드해서 사용 메모리에 있는 프로세스를 반복해서 사용해야 하는 경우, 더욱 빠른 기억장치인 캐시에 저장하여 사용 기억장치 계층 구조 적절한 비용으로 높은 성능을 낼 수 있도록 계층적으로 구성 CPU[레지스터] > 캐시 기억장치 > 메모리 > 보조 기억장치 OS의 메모리 관리 메모리 호출: 언제 새로운 프로세스를 메모리에 둘 것인가? 메모리 배치: 실행된 프로세스를 메모리 내의 어느 곳에 둘 것인가? 메모리 교체: 메모리가 꽉 찬 상태에서 새로운 프로세스를 적재해야 한다면 어떤 프로세스를 제거할 것인가? 메모리를 고정 분..