본문 바로가기
[실용주의 프로그래머] 직교성 [실용주의 프로그래머] 직교성 -설계, 빌드, 테스트 그리고 확장하기에 쉬운 시스템을 만드는 데에 있어 직교성(Orthogonality)은 매우 중요한 개념이다. 직교성이란 -컴퓨팅에서 이 용어는 일종의 독립성(independence)이나, 결합도 줄이기(decoupling)을 의미한다.하나가 바뀌어도 나머지에 어떤 영향도 주지 않으면 서로 직교한다고 할 수 있다. 비직교적인 시스템 직교성의 장점 -시스템의 컴포넌트들이 고도로 상호의존적인 경우, 특정 국지적 부분만 수정하는 방법이란 없다. “” 관련 없는 것들 간에 서로 영향이 없도록 하라. “” -컴포넌트들이 각기 격리(isolate)되어 있으면 어느 하나를 바꿀 때 나머지 것들을 걱정하지 않아도 된다.해당 컴포넌트의 외부 인터페이스를 바꾸지 않는 한.. 2018. 9. 30.
[linux] ln 명령어 [linux] ln 명령어 -link 의 약자이다. -한 파일을 다른 파일 이름으로도 사용하고자 할 때 사용하는 명령어이다.링크된 파일 중 한 파일을 수정하면 다른 파일들도 수정된다.하드 링크와 심볼릭 링크가 있다. -하드링크는...파일의 내용물 자체는 sync 가 되지만, 파일 자체는 독립적으로 존재한다고 보면 된다.즉 원본파일의 내용, 소유자, 권한 등을 변환하면 대상파일도 이와 동일하게 변경된다. 그러나, 파일을 없애려면 링크로 생성된 링크 파일을 모두 지워야 한다.파일 자체는 독립적인 특이한 녀석이다.$ ln [원본파일명] [대상파일명] -심볼릭 링크는...윈도우 운영체제의 바로 가기 아이콘 개념이다.링크로 생성된 파일에 내용이 존재하지 않고 각각의 i-node 를 가진 또 다른 파일이 어디를 가.. 2017. 11. 1.
[android] Play Store 에 대한 미신 [android] Play Store 에 대한 미신 https://medium.com/its-an-app-world/the-mythical-world-of-play-store-44f66e9e771f -아이콘 디자인에 대해서는 field test 를 하는 것이 좋다.많은 selection 에서 특징을 잘 전달하면서 눈에 띄는 것은 그리 쉽지 않다. -Visual data 는 user 에게 영향을 미치는 첫 번째 것!최고로 괜찮은 screenshot 을 찍고, 여기서 쓸데없는 정보들은 제거를 한다.여기에 설명하는 text 를 넣을수도, highlight 를 할 수도 있다. 가장 좋은 방법은.. status bar 에 있는 정보들은 보통 쓸데가 없으니 이 녀석들은 제거하자. 그리고 화면만 봐서는 뭔지 모르기 .. 2017. 8. 6.
[먹거리X파일] 바지락 & 기계발골육 이야기 - E001 [먹거리X파일] 바지락 & 기계발골육 이야기 - E001 방송일자 : 16.03.06 바지락 이야기 -시장은 물론 바지락을 취급하는 식당들에서 중국산 바지락을 국산이라고 속여서 판매. -국내산 바지락은 중국산에 비해 약 2배 비싸다. -바지락을 비롯하여 대부분의 국내산이 중국산에 비해 맛이 깊고 좋다고 하지만,일반인이 구분하기 어렵다. -겨울에는 국내산 바지락이 나지 않음.작업환경이 좋지 않아(위험) 잡지 않는다. 4월~7월에 가장 많이 생산된다. -국산은 검은색이고 중국산은 갈색과 검은색 사이의 색을 띈다고 하지만,일반인은 육안으로 구분하기가 매우 힘들다. 삶은 후에도 구분하기 어렵다. -중국산 바지락의 납, 카드뮴, 총 수은을 검사해보았지만, 기준치 이하로 안전하다. -방송일자는 2016년 3월인데... 2017. 5. 31.
[책 정리] 먹고 단식하고 먹어라 내용 총정리 [책 정리] 먹고 단식하고 먹어라 내용 총정리 -칼로리 제한하면 살이 빠진다. 그러나 이는 장기적으로 실천하기 어렵다.다이어트 방법은 단순할 수록 지속할 가능성도 높고, 영향력도 당연히 높다. -인간은 영양을 축적하는 “만복” 상태, 혹은 영양을 소비하는 “공복” 두 가지 상태로만 존재한다.현대인들은 하루 중 20시간을 만복 상태로 보내기 때문에 지방으로 구성된 칼로리를 소비할 기회를 제대로 주지 않는다. -식품관련 연구는 항상 먹는것을 바탕으로 이루어진다.그래서 단식에 대한 상업적 연구는 이루어지지 않는다.우리는 모든 식품에 관련된 홍보를 비판적으로 바라보고 수용할 필요가 있다. -단식은 “자발적으로 음식을 미리 정한 일정 기간동안 금하는 것” 을 말한다. -공복 상태와 기진(wasting)상태는 다르.. 2017. 3. 31.
[Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. [Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. - 객체 직렬화(object serialization) API 는 객체를 바이트 스트림으로 인코딩하고, 인코딩된 바이트 스트림으로부터 객체를 복원(디코딩) 하는 프레임워크이다. - 객체를 바이트 스트림으로 인코딩하는 것을 직렬화(serializing)이라 하고, 그 반대의 절차를 역직렬화(deserializing)이라고 한다. - 객체가 일단 직렬화되면, 인코딩된 객체는 향후에 역직렬화 하기 위해 하나의 실행 중인 VM 에서 다른 VM 으로 전송되거나 디스크에 저장될 수 있다. 직렬화는 원격 통신을 위한 표준 통신 회선 수준의 객체 표현을 제공한다. 직렬화 프록시는 effective java 의 직렬화 주제중 가장 .. 2017. 3. 21.
[Effective Java] wait 와 notify 대신 동시성 유틸리티를 사용하자. [Effective Java] wait 와 notify 대신 동시성 유틸리티를 사용하자. - wait 와 notify 를 사용할 이유가 거의 없다. 자바 1.5 배포판 기준으로 고수준 동시성 유틸리티를 제공한다. wait와 notify 를 올바르게 사용하기 어렵다면, 그 대신에 고수준 동시성 유틸리티를 사용해야 한다. - java.util.concurrent 패키지의 고수준 유틸리티는 세 부류로 나누어진다. 실행자 프레임워크(executor framework) 동시적 컬렉션 및 동기자(synchronizer) - 동시적 컬렉션은 List, Queue, Map 과 같은 표준 컬렉션 인터페이스를 고성능의 동시적 구현체로 제공한다. 높은 동시성을 제공하기 위해 이 구현체들은 내부적으로 자기 나름의 동기화를 한.. 2017. 3. 13.
[Effective Java] 필요하면 방어 복사본을 만들자. [Effective Java] 필요하면 방어 복사본을 만들자. - 자바는 꽤나 안전한 언어이지만, 우리 클래스의 클라이언트가 불변 규칙을 파괴하기 위해 최선을 다할 거라는 가정하에 방어적으로 프로그램을 작성해야 한다. - 가변 객체인 매개 변수는 각각의 방어복사본(defensive copy)을 만들어서 생성자에 전달해야 한다. 그렇지 않으면 예상치 못한 여러 상황이 발생할 수 있다. - 방어복사본은 매개 변수의 유효성 검사에 앞서 만들어야 하며, 유효성 검사는 원본이 아닌 복사본을 대상으로 해야 한다!! ( TOCTOU 공격 ( 검사시간/사용시간) 이슈 ) - clone 은 위험한 복사방법이므로 가급적이면 다른 방법으로 복제하자. final 이 아닌 Class 는 sub class 가 clone 을 상속.. 2017. 1. 10.
[Effective Java] 제네릭 타입을 애용하자. [Effective Java] 제네릭 타입을 애용하자. - 클래스를 제네릭화 하는 방법. - 1. 클래스 선언부에 하나 이상의 타입 매개변수를 추가. - 2. 코드 안에 나오는 모든 Object 타입을 그것에 맞는 타입 매개변수로 변경한 후 컴파일. new E[ size ] 와 같은 부분에서 보통 에러가 난다. 이를 피해가는 방법 1. E[] elements = (E[]) new Object[ size ]; // 타입 안전하진 않다. 이를 피해가는 방법 2. Object[] elements = new Object[ size ]; // 사용하는 부분에서 casting 이 필요하다.. scalar 타입보다 배열 타입에 대한 unchecked 캐스트 경고를 억제하는 것이 더 위험하므로, 2번 방법이 더 적합해.. 2016. 11. 29.
반응형