본문 바로가기

전체 글

(215)
iOS input 태그 focus시 자동 zoom-in 막기 충남대학교 채팅 웹을 개발하면서, ngrok을 이용해 내 핸드폰을 보며 모바일에서 레이아웃을 잡던 중에 신기한 현상을 발견했다. input 포커스시에 자동으로 zoom-in이 먹힌다는 점! 우선 해결방법부터 보자. head태그에 meta 태그를 넣어주면 된다. 페이지가 모바일 크기에 완전히 최적화되어 만들어졌다면 meta 태그를 사용하여 줌을 막을 수 있다. 이제 완전히 해결된 것 같지만, 이렇게되면 페이지의 확대자체가 불가능해진다. 페이지 확대 자체가 불가능하다는 것은 사용자 경험이 좋지 못하다. 다르게 해결해보자. 더 좋은 해결방법은 폰트 크기를 자동 줌인이 발생하지 않은 최소 크기인 16px이상으로 맞추는 것이다. 나는 보통 rem 상대 단위를 사용하는데, html에 font-size:10px을 줘..
객체지향의 사실과 오해 | 5장 의도는 '메시징'이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려있다. - Kay 자율적인 책임 객체지향 공동체를 구성하는 기본 단위는 '자율적'인 객체이다. 자율성이란 자기 스스로의 원칙에 따라 어떤 일을 하거나 자신을 통제해서 절제하는 성질이나 특성이다. 자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 협력에 참여하는 객체자 얼마나 자율적인지가 전체 애플리케이션의 품질을 결정한다. 객체지향 세계는 자율적인 객체들의 공..
객체 지향의 사실과 오해 | 4장 우리 모두를 합친 것보다 더 현명한 사람은 없다. - Ken Blanchard 협력이라는 문맥이 객체의 행동 방식을 결정한다. 개별 객체가 아니라 객체들 사이에서 이뤄지는 협력이다. 협력이 자리를 잡으면 저절로 객체의 행동이 드러나고 뒤이어 적절한 객체의 상태가 결정된다. 객체의 모양을 빚는 것은 객체가 참여하는 협력이다. 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고 필요한 행동이 객체의 상태를 결정한다. 개별적인 객체의 행동이나 상태가 아니라 객체들 간의 협력에 집중하라. 협력 협력의 본질은 요청과 응답으로 연결되는 사람들의 네트워크이다. 다른 사람으로부터 요청을 받은 사람 역시 자신에게 주어진 일을 처리하던 도중 다른 사람의 도움이 필요할 수 있다. 결과적으로 협력은 다수의 요청과 응답으로..
객체 지향의 사실과 오해 3장 일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 것이라는 것을 깨닫고 나면 훌륭한 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해진다. - Keith Devlin 추상화를 통한 복잡성 극복 추상화란 현실에서 출발하되 불필요한 부분을 제거하면서 사물의 본질을 드러나게 하는 과정이다. 추상화의 목적은 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하는 것이다. 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법. 복잡성을 다루기 위해 추상화는 두 차원에서 이루어진다. 첫 번째 차원은 구체적인 사물들 간의 공통점은 취하고 차이점은 버리..
객체지향의 사실과 오해 2장 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제이다. - Rebecca Wirfs-Brock 객체지향과 인지 능력 객체지향은 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지능력에 기반을 둔다. 인간의 인지 능력은 물리적인 한계를 넘어 개념적으로 경계 지을 수 있는 추상적인 사물까지도 객체로 인식할 수 있게 한다. 세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 극복하기 위한 인간의 작은 몸부림이다. 객체란 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다. 객체란 식별가능한..
객체지향의 사실과 오해 1장 시너지를 생각하라. 전체는 부분의 합보다 크다. - Stephen R. Covey 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 역할, 책임, 협력 애플리케이션의 기능은 더 작은 책임으로 분할되고 책임은 적절한 역할을 수행할 수 있는 객체에 의해 수행도니다. 객체는 자신의 책임을 수행하는 도중에 다른 객체에 도움을 요청하기도 한다. 결론적으로 시스템은 역할과 책임을 수행하는 객체로 분할되고 시스템의 기능은 객체간의 연쇄적인 요청과 응답의 흐름으로 구성된 협력으로 구현된다. 객체 지향 설계라는 예술은 적절한 객체에 적절한..
쉽게 배우는 운영체제 | ch10. 입출력 시스템과 저장장치 입출력 시스템 컴퓨터는 필수장치인 CPU와 메모리, 주변장치인 입출력장치와 저장장치로 구성되며 각 장치는 메인보드에 있는 버스로 연결된다. 저속 주변장치: 메모리와 주변 장치 사이에 오고 가는 데이터의 양이 적어 데이터 전송률이 낮은 장치를 말한다. 키보드의 경우 아무리 빨리 타이핑을 한다고 해도 1초에 1KB를 넘지 않으므로 저속 주변장치 고속 주변장치: 메모리와 주변장치 사이에 대용량의 데이터가 오고 가므로 데이터 전송률이 높은 장치. 출력 장치인 그래픽 카드의 경우 모니터에 초당 수싲밪으이 그래픽을 보여주어야 하기 떄문에 고속 주변장치이다. 여러 주변장치는 메인보드 내의 버스로 연결된다. 그런데 버스에는 많은 종류의 장치가 연결 되기 때문에 버스를 1개만 사용하면 병목 현상이 발생한다. 따라서 여러..
쉽게 배우는 운영체제 | ch7. 물리 메모리 관리 메모리 관리의 개요 메모리 관리의 복잡성 CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해 메모리 주소 레지스터를 사용한다. 메모리 주소 레지스터에 필요한 메모리 주소를 넣으면 데이터를 메모리에서 가져오거나 메모리에 데이터를 옮길 수 있다. 폰 노이만 구조의 컴퓨터에서 메모리는 유일한 작업 공간이며 모든 프로그램은 메모리에 올라와야 실행 가능하다. 과거의 일괄 처리 시스템에서는 한 번에 한가지 작업만 처리했기 때문에 메모리 관리가 어렵지 않았다. 그러나 오늘날의 시분할 시스템에서는 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되기 때문에 메모리 관리가 복잡하다. 복잡한 메모리 관리는 메모리 관리 시스템이 담당한다. 메모리 관리의 이중성 메모리 관리의 이중성이란 프..