본문 바로가기
반응형

분류 전체보기319

디미터의 법칙 (Law of Demeter) - 최소 지식의 원칙(Principle of least knowledge) 소프트웨어 공학에서 프로그램을 설계할 때 '디미터의 법칙(Law of Demeter)' 혹은 '최소 지식의 원칙(Principle of least knowledge)'이라는 법칙이 있다. 이는 소프트웨어 모듈 사이의 결합도를 줄여서 코드의 품질을 높이자는 취지의 가이드라인이다. '디미터의 법칙(Law of Demeter)'에서 디미터 혹은 데메테르는 그리스 신화에서 나오는 수확의 신이다. (로마 신화에서는 세레스(Ceres)라고 부른다.) 하지만 디미터의 법칙은 수확의 신과 직접적으로 연관은 없고, 디미터 프로젝트(Demeter Project)라는 프로그래밍 프로젝트에서 유래했다. 소프트웨어 설계에서 모듈 사이의 결합도를 줄이기 위해서 객체의 모든 메소드는 다음에 해당하는 메소드만을 호출해야 한다. 1... 2019. 7. 9.
Valid XML vs Well-formed XML XML 문서의 형식을 이야기할 때 'Well-formed XML'과 'Valid XML'이라는 구분을 하게 된다. Well-formed와 Valid는 어떻게 다른지 정리를 할 필요가 있다. 1. Well-formed XML XML은 W3C(Workdl Wide Web Consortium)이 정해놓은 표준이다. XML 표준을 보면 XML 문서가 어떻게 작성되어야 하는지 기술하고 있다. XML 문서는 반드시 하나의 루트 엘리먼트로부터 시작되어야 하며, 태그 이름은 숫자로 시작할 수 없고 정해진 문자만 포함할 수 있다는 등의 내용이 정리되어있다. XML에 포함되어 있는 데이터의 내용과 상관없이 XML 문법만 잘 지켜지면 'Well-formed XML'이라고 할 수 있다. 2. Valid XML 'Valid X.. 2019. 7. 8.
구글 안드로이드 대체할 "퓨시아(Fuchsia)" 개발자 사이트 오픈 구글이 지난 29일 '퓨시아 OS(Fuchsia OS)'의 개발자 사이트를 오픈했다. (링크 : 퓨시아 개발자 사이트) 퓨시아 OS는 안드로이드 운영체제를 대체하기 위해 구글이 준비하고 있는 운영체제로 사물인터넷, 모바일, 랩톱 등의 기기의 운영을 목표로 설계된 새로운 운영체제다. 구글에서는 현재 100명 이상으로 구성된 팀이 이 프로젝트에 참여하고 있다. 기존의 안드로이드와 크롬 OS가 리눅스 커널을 기반으로 작성된데 반해 퓨시아OS는 지르콘이라는 마이크로 커널을 사용한다고 한다. 지르콘 커널은 LK라는 마이크로 커널을 가지고 구글에서 자체 개발한 것으로 초창기에 '마젠타(Magenta)'라는 이름으로 불렸다고 한다. 퓨시아의 공개된 코드는 다음 링크에서 확인할 수 있다. (링크 : GoogleSour.. 2019. 7. 4.
소프트웨어 개발자 & 엔지니어 이력서 작성 팁 이력서는 Résumé 혹은 CV(Curriculum Vitae)라고 한다. 대부분의 채용은 이력서를 제출하는데서 시작한다. 제출된 이력서는 채용 담당자에게 전달되어 다른 지원자의 이력서와 비교 작업에 사용된다. 이력서는 채용 담당자에게 자신을 알릴 수 있는 첫 번째 커뮤니케이션이다. 이력서 검토 단계를 통과해야 실제 인터뷰 프로스세스에 돌입하게 된다. 따라서 이력서를 제대로 작성하는 것이 취업이나 이직하는데 도움이 많이 된다. 이력서는 최대한 간결히 이력서는 최대한 간결하게 작성하는게 중요하다. 채용 담당자는 여러분의 이력서 이외에도 수 많은 이력서를 검토해야한다. 따라서 이력서가 길면 제대로 읽지 않을 가능성이 높다. 가장 좋은 이력서는 한장에 모든 내용이 기술된 것이다. 두 장까지는 괜찮지만 그 이상.. 2019. 7. 3.
[Java] Inheritance vs Delegation (상속과 위임) 객체지향 프로그래밍에서 클래스를 설계할 때 상속(Inheritance)과 위임(Delegation) 방식을 고민하게 된다. 상속(Inheritance)과 위임(Delegation) 방식의 차이점과 어떤 상황에서 뭘 써야할지에 대해 알아보자. 클래스의 상속(Inheritance) 객체지향 프로그래밍 언어에서 클래스를 상속(Inheritance)을 통해 정의할 수 있다. class Person { protected int age; protected String name; public Persion(int age, String name) { this.age = age; this.name = name; } public int getAge() { return this.age; } public String getN.. 2019. 7. 2.
Cardinality vs Selectivity (카디널리티와 선택도의 차이) 데이터를 다루는 DB나 빅데이터 분야에서 ‘카디널리티(Cardinality)’와 ‘선택도(Selectivity)’는 자주 언급되는 용어다. 이 용어의 차이점을 잘 알고 있어야 데이터의 특성을 잘 파악할 수 있다. 카디널리티(Cardinality)와 선택도(Selectivity)는 절대적인 수치 계산이라기보다는 두 개의 데이터 집합의 특성을 비교하는 상대적인 개념으로 사용해야한다. 카디널리티(Cardinality) 카디널리티(Cardinality)는 특정 데이터 집합의 유니크(Unique)한 값의 개수이다. 예를 들어 데이터베이스에 '성별' 컬럼의 경우 남자와 여자라는 값을 갖는다. (생물학적인 성별만 고려하자면) 이 경우 카디널리티는 2다. 반면 주민등록 번호는 테이블에 존재하는 모든 레코드에 유니크 할.. 2019. 7. 1.
자주 사용하는 마크다운 문법(Markdown Syntax) 프로그래머로 일하면서 다양한 협업툴을 사용하게 된다. 그 중에 깃허브(Github)와 관련된 툴을 사용하는 경우 '마크다운(Markdown)'이라는 언어를 사용하게 되는 경우가 많이 있다. 깃허브 이슈라든지 '풀 리퀘스트(Pull Request)' 요청시 요청 사항을 기술하기 위해서 마크다운을 많이 사용한다. 마크다운(Markdown)이란? 마크다운은 HTML, XML과 같은 마크업 언어의 일종이다. 2004년 '존 그루버'와 '에런 스워츠'가 협업을 통해 만들어낸 언어이며, 사람들이 읽기 쉽고 쓰기 쉬운 플레인 텍스트(Plain Text) 포맷을 사용하여 작성할 수 있다. XHTML, HTML 등으로 쉽게 변환이 가능한 것이 특징이다. 최근 티스.. 2019. 7. 1.
아이패드 웹 페이지에 필기하는 방법 아이패드로 웹 페이지를 보면서 필기를 하고 싶은 경우가 있다. 커뮤니티 아티클을 읽으면서 밑줄을 치고 싶거나 개념을 설명하는 그림에 부가적인 설명을 덧붙이고 싶을 때도 있다. 아이패드로 웹 페이지에 필기를 하고 싶은 경우 사파리 웹 브라우저의 PDF로 저장하기 기능을 이용하면 된다. 우선 사파리 웹 브라우저로 피릭하고 싶은 웹 페이지를 연다. 네이버 메인 페이지에 메모를 해보겠다. 사파리의 오른쪽 위에 "공유" 버튼을 누르면 웹 페이지를 공유할 수 있는 여러 메뉴들이 나온다. 그 중에 "PDF 생성" 버튼을 누른다. 그러면 현재 보고 있는 웹 페이지가 PDF 형태로 받아진다. 이제 이 PDF에 메모를 하면 된다. 애플 펜슬을 이용해서 웹 페이지에 메모를 한 다음 PDF를 지우거나 다른 이름으로 저장하여 .. 2019. 6. 30.
기가 인터넷, 기가 랜 카드 확인 방법 이번에 이사를 하면서 인터넷 설치를 변경해야 할 일이 생겼다. 새로 이사를 가면서 지금 사용하고 있는 100Mbps 인터넷을 해지하고, 남들 다 쓰는 기가인터넷을 사용하려고 찾아봤다. 기가인터넷을 사용하기 위해서는 모뎀이나 공유기 성능도 중요하지만 가장 중요한 것은 현재 사용하고 있는 컴퓨터의 랜카드가 기가랜을 지원하는지 여부를 확인해야 했다. 참고로 굉장히 오래된 컴퓨터가 아니라면 왠만하면 다 지원한다고 생각하면 된다. 기가 인터넷 사용을 위한 기가랜카드 확인 방법 1. [윈도우키] + [Pause] 키를 눌러 시스템 정보창을 띄운다. (혹은 파일 탐색기에서 '내 PC'를 우클릭 한 다음 [속성] 메뉴를 선택한다.) 2. "장치관리자" 항목을 선택한다. 3. 장치관리자 항목중, "네트워크 어댑터" 중에.. 2019. 6. 28.
반응형