본문 바로가기
[샌프란시스코] Mission District 산책 with 경마뉘 [샌프란시스코] Mission District 산책 with 경마뉘 시작 : 01:57끝 : 02:30 El Techo 에서 신나게 낮술과 밥을 냠냠쩝쩝 하고 이제 로컬을 따라 산책을 한다. 우선 식후 커피를 마셔야 겠다고 한다.그래서 경마뉘가 자주 간다는 커피 집에 갔다. 카페 이름은 RITUAL COFFEE.기본 아메리카노가 약 $ 3.25, 약 3,500원정도 한다.뭔가 커피, 피자, 초콜릿 등 미국이 원조일 것 같은 녀석은 그래도 싸겠지 싶었는데,커피 가격도 그렇게 싸지는 않다. 경마뉘는 커피의 맛에 대해 이야기했는데,자기는 시큼한 맛이 있는 커피가 너무 맛이 있단다.그리고 탄 맛 혹은 쓴 맛나는 스타벅스 커피는 너무 싫단다.커피의 맛을 알면 시큼한 커피라나? ㅋㅋ 혼자 와서 컴퓨터 하고, 책 읽.. 2017. 5. 17.
[취미] 스크래치 그림 [취미] 스크래치 그림 시작 : 16:02끝 : 16:10 너무 단편적인 삶을 사는 것 같아 취미생활을 조금씩 늘려가려 하고 있다.그래서 사실 보문에 살 때 갱또님으로부터 선물 받았던 "스크래치 그림" 을 이제야 개봉해서 했다. 스크래치 그림은 초등학교 때 하는 크레파스로 종이를 가득 채우고,그 위에 검은색 크레파스로 덧칠 한 다름 긁어내는 그 형태의 그림이다. 검은 바탕 밑에는 반짝이는 느낌의 노란색 배경이 있다.검은색 그림 위에 연하게 회색으로 긁어내야 할 부분이 표시되어 있는데,그 부분을 벗겨내면 위와 같은 그림이 완성된다. 아주 쉬워보이지만 고도의 집중력이 필요하고, 손도 많이 아프다.키트에 동봉된 긁어내는 나무 펜(?) 이 뭉툭해지기 때문에 뾰족하게 깍으면서 작업했다. 위의 피라미드와 스핑크스는.. 2017. 5. 7.
[Java Concurrency] 성능, 확장성 #1 [Java Concurrency] 성능, 확장성 - 스레드를 사용하는 가장 큰 목적은 바로 성능을 높이고자 하는 것이다. 스레드를 사용하면 시스템의 자원을 훨씬 효율적으로 활용할 수 있고, 앱으로 하여금 시스템이 갖고 있는 능력을 최대한 사용하게 할 수 있다. 그와 동시에 기존 작업이 실행되고 있는 동안 새로 등록된 작업을 즉시 실행할 수 있는 준비를 갖추고 있기 때문에 앱의 응답 속도를 향상시킬 수 있다. - 성능을 높이는 방법은 대부분 앱의 내부 구조를 복잡하게 만들어야 하는 경우가 많고, 따라서 안전성과 활동성에 문제가 생길 가능성도 적지 않다. 최악의 경우에는 성능을 높이기 위해 적용한 프로그래밍 기법 때문에 프로그램의 다른 부분에서 역효과를 가져오거나 성능상에 문제를 일으킬 수도 있다. - 성능.. 2017. 5. 3.
[Java Concurrency] 스레드 풀 활용 [Java Concurrency] 스레드 풀 활용 8.1. 작업과 실행 정책 간의 보이지 않는 연결 관계 - 일정한 조건을 갖춘 실행 정책이 필요한 작업에는 다음과 같은 것들이 있다. 의존성이 있는 작업 스레드 한정 기법을 사용하는 작업 응답 시간이 민감한 작업 ThreadLocal 을 사용하는 작업 - 스레드 풀은 동일하고 서로 독립적인 다수의 작업을 실행할 때 가장 효과적이다. - 특정 작업을 실행하고자 할 때 그에 맞는 실행 정책을 요구하는 경우도 있고, 특정 실행 정책 아래에서는 실행되지 않는 경우도 있다. 다른 작업에 의존성이 있는 작업을 실행해야 할 때는 스레드 풀의 크기를 충분히 크게 잡아서 작업이 큐에서 대기하거나 등록되지 못하는 상황이 없도록 해야 한다. 스레드 한정 기법을 사용하는 작업.. 2017. 4. 27.
[Java Concurrency] 중단 및 종료 #2 [Java Concurrency] 중단 및 종료 #2 7.3. 비정상적인 스레드 종료 상황 처리 - 스레드를 예상치 못하게 종료시키는 가장 큰 원인은 바로 RuntimeException 이다. RuntimeException 은 대부분 프로그램이 잘못 짜여져서 발생하거나 기타 회복 불가능의 문제점을 나타내는 경우가 많기 때문에 try_catch 구문으로 잡지 못하는 경우가 많다. RuntimeException 은 호출 스택을 따라 상위로 전달되기보다는 현재 실행되는 시점에서 콘솔에 스택 호출 추적 내용을 출력하고 해당 스레드를 종료시키도록 되어 있다. - 스레드 풀에서 사용하는 작업용 스레드나 스윙의 이벤트 처리 스레드와 같은 작업 처리용 스레드는 항상 Runnable 등의 인터페이스를 통해 남이 정의하고.. 2017. 4. 26.
[Java Concurrency] 중단 및 종료 #1 [Java Concurrency] 중단 및 종료 #1 - 작업이나 스레드를 안전하고 빠르고 안정적으로 멈추게 하는 것은 어려운 일이다. 더군다나 자바에는 스레드가 작업을 실행하고 있을 때 강제로 멈추도록 하는 방법이 없다. 대신 인터럽트(interrupt)라는 방법을 사용할 수 있게 되어 있는데, 인터럽트는 특정 스레드에게 작업을 멈춰달라고 요청하는 형태이다. 실제 상황에서 특정 스레드나 서비스를 "즉시" 멈춰야 할 경우는 거의 없고, 강제로 종료하면 공유되어 있는 여러 가지 상태가 비정상적인 상태에 놓일 수 있기 때문에 스레드 간의 협력을 통한 접근 방법이 올바르다. 다시 말해, 작업이나 서비스를 실행하는 부분의 코드를 작성할 때 멈춰달라는 요청을 받으면 진행 중이던 작업을 모두 정리한 다음 종료하도록.. 2017. 4. 25.
[Java Concurrency] 작업 실행 [Java Concurrency] 작업 실행 - 앱이 해야 할 일을 "작업"이라는 단위로 분할하면 프로그램의 구조를 간결하게 잡을 수 있고, 트랜잭션의 범위를 지정함으로써 오류에 효과적으로 대응할 수 있고, 작업 실행 부분의 병렬성을 자연스럽게 극대화 할 수 있다. 6.1. 스레드에서 작업 실행 - 프로그램에서 일어나는 일을 작업이라는 단위로 재구성하고자 한다면 가장 먼저 해야 할 일은 작업의 범위를 어디까지로 할 것인지 정하는 일이다. 원론적으로 보자면 작업은 완전히 독립적인 동작을 말한다. 독립성이 갖춰져 있어야 병렬성을 보장할 수 있다. 작업을 스케쥴링하거나 부하 분산(load balancing)을 하고자 할 때 폭넓은 유연성을 얻으려면 각 작업이 앱의 전체적인 업무 내용 가운데 충분히 작은 부분을.. 2017. 4. 24.
[종로3가 카페] 카페디홈 ( Cafe Dhome ) 후기 [종로3가 카페] 카페디홈 ( Cafe Dhome ) 후기 오랜만에 갱또님과 조우하여 다녀왔다. 카페에 가서 작업(?) 을 자주하는 나는 가성비 좋은 아지트같은 곳을 찾고 싶었다.그래서 검색하다가 D Home 카페를 알게 되었고, 갱또님을 꼬셔 찾아간다. 위치는 상당히 안 좋다.아지트로서는 괜찮을지 모르나 너무 깊숙한 골목 안에 덩그러니 있어 처음에 찾아갈 때 "진짜 이곳에 카페가 있을까?" 싶었다. 여튼 찾았으니 들어갔다.우선 첫 이미지가 별로였다.손님이 아무도 없었고, 약간 싸늘했으며, 최근에 페인트 칠이라도 하셨는지 오묘한 화학물질 냄새가 많이 났다. 카페이지만 저녁에는 맥주도 파나보다.들어갔더니 "어떤 거 드실꺼예요?" 라는 말로 우리를 반겨주었다.나는 당황하며 "샐러드랑 그런거 먹으려구요" 라고.. 2017. 3. 25.
[Effective Java] 스레드 스케쥴러에 의존하지 말자 [Effective Java] 스레드 스케쥴러에 의존하지 말자 - 많은 스레드가 runnable 상태일 때는 어떤 스레드를 실행시킬 것인지, 그리고 얼마 동안 실행시킬 것인지를 스레드 스케쥴러가 결정한다. 운영체제에서는 공정하게 그런 결정을 내리려고 하겠지만, 그 정책은 서로 다를 수 있다. 따라서 잘 작성한 프로그램은 그런 정책의 상세한 내용에 매달려서는 안 된다. 정확성이나 성능을 스레드 스케줄러에 의존하는 프로그램이라면 그 어떤 것도 이식성이 없어질 가능성이 크다. - 강력하고, 응답성이 좋고, 이식성이 있는 프로그램을 작성하는 가장 좋은 방법은, runnable 상태의 평균 스레드 개수가 프로세서의 개수보다 그리 크지 않게 하는 것이다. 이렇게 하면 스레드 스케줄러는 선택의 여지 없이 runnab.. 2017. 3. 17.
반응형