분류 전체보기
-
-
리팩토링 - 메소드 정리My-Book(History) 2017. 1. 11. 00:09
메소드 정리 - 쪼갠 메소드중 제 역할을 못할 경우 메소드 내용을 호출하는 메소드에 직접 넣는 기법을 사용하라. - 임시변수를 메소드 호출로 전환 기법을 사용할때 어려운 상황에 처하면 임시변수를 분리 시켜라 메소드 추출 - 어떤 코드를 그룹으로 묶어도 되겠다고 판단될땐 그 코드를 빼내어 목적을 잘 나타내는 직관적 이름의 메소드로 만들자. - 메소드 추출로 코드의 명료성이 향상 되기만 한다면 메소드명이 추출한 코드보다 길어도 메소드 추출을 실시해야 한다. - 지역 변수가 읽기 용으로만 사용된다면 그냥 매개변수로 전달하라. 메소드 내용 직접 삽입 - 메소드 기능이 너무 단순해서 메소드 명만 봐도 뻔할땐 그 메소드의 기능을 호출하는 메소드에 넣어버리고 그 메소드는 삭제하라 - 주의할점은 메소드가 재정의 되어있..
-
리팩토링 - 코드의 구린내My-Book(History) 2017. 1. 10. 23:46
잘못된 소속 - 객체의 핵심은 데이터와 그 데이터를 사용하는 프로세스를 묶는 기술이다. - 리팩토링을 하는 도중 특정 메소드가 호출하는 클래스가 많을 경우 문제의 메소드가 접근하는데이터가 어느 클래스에 많이 사용하는지 파악하여 해당 클래스로 옮겨라 중복 코드 - 한 클래스의 두 하위클래스에 같은 코드가 들어 있는 경우 메소드 추출(공동로직을 빼네어 메소드 처리)기법으로 중복을 없앤 후 메소드 상향 기법을 적용하면 된다. - 상향시 조금 다른 로직이 있다면 그 메서드를 상위 클래스에서 abstract 시켜라 장황한 메소드 - 최적의 상태로 장수하는 프로그램을 보면 공통적으로 메소드 길이가 짧다. - 메소드에 매개변수와 임시변수가 많으면 메소드 추출하기 까다로워진다. - 리팩토링 기법을 사용했음에도 여전히 ..
-
리눅스 ulimit리눅스 2017. 1. 5. 16:21
각 계정 마다 하나의 프로세스가 가질 수 있는 파일 지시자에 제한이 있다. Soft lit와 Hard limit 두 가지가 있는데 Soft limit : 새로운 프로그램이 생성되면 디폴트로 적용되는 제한 값 Hard limit : Soft limit 부터 늘릴 수 있는 최대 값 이다. ulimit -n : 오픈 파일의 개수가 나오는데 이는 프로세스당 커널이 사용할 수 있는 개수와 동일한 개념이다. Soft limit 값이 무한대이더라도 Hard limit 값이 256이라면 프로세스당 파일 지시자는 256개를 넘어갈 수 없다. 일반적으로 파일 지시자를 확인할 때 사용하는 ulimit -a명령은 Soft limit를 보여주는 명령으로, 이 값만 확인하면 설정값이 충분하다고 착각할 수 있는데 Hard limi..
-
아파치 최적화 튜닝하는 법!Etc 2017. 1. 5. 09:44
웹 서버를 며칠간 재시작하지 않고 놔둬서 현재 서비스 상태를 파악하는 게 가장 좋을 것 같습니다. 간단히 아파치 서버와 클라이언트 사이의 동시 소켓 연결 개수를 확인하기 위해 아래와 같이 명령합니다.$ netstat -nta | grep :80.*ESTABLISHED | wc -l 이 연결 개수는 아파치 서버가 현재 처리 중인 소켓 연결 개수이며 앞으로 설명할 MaxClients 수를 넘지 않도록 유의해야 합니다. 그런데 아직 서비스를 시작하기 전이라 웹 서버의 부하를 확인하기가 어렵다면 아파치 벤치마킹 도구(ab)를 이용해볼 수도 있습니다.$ ab -n 3000 -c 200 http://example.com/ 위 명령어는 http://example.com 사이트에 200명의 사용자가 15번씩 총 300..
-
리눅스 lsof 란?리눅스 2017. 1. 5. 09:40
lsof - 유닉스나 리눅스에서 대상 프로세스의 프로세스 ID[PID]를 알고 있어야 하고, root 계정 또는 모니터링 대상 프로세스를 가동한 정보를 조회할 수 있다. - 파일지시자가 제공해주는 키값을 사용하고 있는 목록을 제공해줌 모든 열린 파일 출력 옵션 없이 lsof 를 실행하면 모든 열린 파일 정보를 출력한다. ? lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 253,0 4096 2 / init 1 root rtd DIR 253,0 4096 2 / init 1 root txt REG 253,0 150352 3932 /sbin/init init 1 root mem REG 253,0 65928 784927 /l..