전체보기
-
[68번째 책] 카네기 인간관계론 (★★★☆☆)1000권 독서 2016. 11. 10. 22:47
책을 읽기전 '뭐 뻔한 소리하겠지', '유명세가 있어봤자 책이 얼마나 내공이 있겠어'라는 선입견을 가지고 책을 읽기 시작했지만, 여지없이 나의 생각은 무너지고 말았다. 사람간의 관계에서 어쩌면 뻔한 이야기 인것 같으면서도, 정말 중요하고 생활속에서 간과하고 있는 요소들을 명확히 지적하고 다양한 예시를 통해 사람을 대하는 태도가 어떠한 결과를 가져오는지를 보여준다. 다양한 예시를 읽으면서도 '한국인' 만의 특성에서는 적용이 다소 어렵지 않을까 싶기도 한 부분들도 있지만, 분명 90%이상은 인생을 살아가는데 정말 도움이 될수 있는 요인들을 정리해놓았다. 책의 내용을 정리하는게 의미없다 생각해서 지금껏 포스팅하는 글에 포함시키지 않았지만. 이 책만큼은 따로 정리한 내용을 첨부하고자한다. 1) 우리가 바로잡아 ..
-
Programming Ruby (25) 단위테스트 - 1Ruby 2016. 11. 10. 20:13
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 단위 테스트는 작은 코드 덩어리, 즉 일반적인 각 메서드와 메서드에 포함된 각 줄을 대상으로 테스트를 수행한다. 시스템 전체를 하나의 테스트 대상으로 보는 다른 테스트와는 대조된다. 소프트웨어는 결국 계층 구조를 이루고 있기 때문에 테스트 대상을 작게 잡아야 한다. 특정 위치에 있는 코드들은 그 아래 계층의 코드가 정상으로 작동해야만 문제없이 작동한다. 아래 계층의 코드에 버그가 있다면 그 위의 계층 역시 이에 영향을 받을 수 있다. 단위 테스트는 프로그래머가 더 좋은 코드를 작성하는 데 도움을 준다. 이는 코드를 실제로 작성하기 전에 테스트에 대해 생각해 보게 함으로써 자연스럽게 더 ..
-
What is Coroutine? - 2카테고리 없음 2016. 11. 9. 21:48
[참고] http://unityindepth.tistory.com/21 코루틴의 특성 1) 특정 작업을 단계적으로 발생하게 한다 2) 시간이 흐름에 따라 발생하는 루틴을 작성할 수 있다. 3) 다른 연산이 완료될때까지 기다리는 루틴을 작성할 수 있다. 쓰레드와 코루틴 코루틴은 쓰레드가 아니다. 코루틴은 비동기가 아니다 ( 비동기가 아니다라는 말은 쉽게 말해서 동시에 발생하지 않는다는 뜻이다. ) 쓰레드는 프로그램에서 다른 쓰레드와 함께 비동기로 실행된다. 멀티프로세서에서 쓰레드는 실제 다른 쓰레드와 함께 동시에 코드가 실행될 수 있다. 여러 쓰레드를 사용하는 멀티스레드 프로그래밍은 코드를 이해하기 복잡하게 만든다. 왜냐하면 하나의 쓰레드는, 다른 쓰레드의 특정 부분을 읽고 있는 동시에, 그것을 변경할 수..
-
What is Coroutine? - 1카테고리 없음 2016. 11. 9. 21:46
[참고] http://www.gamedevforever.com/291 Coroutine 이란? 프로그램이 실행될때 불려지도록 만들어진 프로그램의 중심이 되는 일련의 코드들을 Main Routine(메인 루틴) 이라고 하며, Main Routine외에 다른 Routine 들을 모두 Subroutine(서브루틴)이라고 합니다. 그리고 진입하는 지점을 여러개 가질 수 있는 Subroutine을 Coroutine(코루틴)이라고 합니다. Coroutine은 호출한 Routine을 대등한 관계로 호출할 수 있기 때문에 다른 Routine의 종속관계가 아니라고 표현하기도 합니다. C++에서는 main 함수가 Main Routine 이고 그 외에 다른 함수들은 모두 Subroutine 이라고 볼 수 있습니다. 따라서 ..
-
Programming Ruby (24) 파이버, 스레드, 프로세스 - 2Ruby 2016. 11. 8. 23:26
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 스레드 스케줄러 제어하기 Thread 클래스는 스레드 스케줄러 제어 메서드를 제공한다. Thread.stop은 현재 스레드를 멈추고, Thread#run은 특정한 스레드가 실행되도록 한다. Thread.pass는 다른 스레드가 실행되도록 현재 스레드의 제어권을 넘겨주며, Thread#join과 Thread#value는 주어진 스레드가 끝날 때까지 호출한 스레드의 실행을 연기한다. join과 method가 일반적인 프로그램에서 사용하는 저수준의 스레드 메서드라고 할 수 있다. 나머지 수준의 스레드 제어 메서드들은 제대로 사용하기에 위험이 크다. 다행히도 루비에서는 고수준 스레드 동기 기능..
-
Programming Ruby (23) 파이버, 스레드, 프로세스 - 1Ruby 2016. 11. 8. 22:01
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 루비는 프로그램의 다른 부분을 '동시에' 실행하는 기본적인 두 가지 방법을 제공한다. 파이버를 사용하면 프로그램의 일부분을 정지하고 다른 부분을 실행할 수 있다. 파이버보다 작업간의 결합도가 적은 방법으로는 다수의 스레드를 사용하는 방법과 다수의 프로세스를 분리하는 방법이다. 파이버 루비 1.9에서 파이버가 도입되었다. 파이버는 단순한 코루틴 메커니즘이다. 이를 사용하면 스레드 고유의 복잡한 처리 없이도 스레드 사용하는 것처럼 프로그램을 작성할 수 있다. 다음 예제는 택스트 파일을 분석해 출현횟수를 계산한다. 먼저 파이버를 사용하지 않고 반복문으로 구현한다. counts = Hash.n..
-
Programming Ruby (22) 기본 입출력 - 2Ruby 2016. 11. 7. 23:52
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 네트워크로 통신하기 Socket 클래스를 이용해 HTTP OPTIONS 요청을 사용해서 로컬 엡 서버에 있는 사용자 웹 사이트에 대한 정보를 가져오는 예제이다. require 'socket' client = TCPSocket.open('127.0.0.1', 'www') client.send("OPTIONS /~dave/ HTTP/1.0\n\n", 0) # 0은 표준 패킷을 의미한다. puts client.readlines client.close 실행결과 HTTP/1.1 200 OK Date: Thu 14 nov ~~ Server: Apache/2.2.24 Allow: GET,HEAD,P..
-
Programming Ruby (21) 기본 입출력 - 1Ruby 2016. 11. 7. 23:50
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) IO 객체 루비는 입/출력을 담당하는 기본 클래스 IO를 제공한다. IO객체는 루비프로그램과 외부 리소스 사이의 양방향 채널 역할을 한다. IO객체는 결국 일과 쓰는 것이 전부이다. 파일 열고 닫기 파일 객체는 File.new 메서드를 이용해서 생성할 수 있다. file = File.new("testfile", "r") # ... 파일에 대한 처리 file.close 첫 번째 매개변수는 파일이름, 두 번째 인자는 모드 문자열, 읽기 모드, 쓰기 모드, 읽기 쓰기모드로 File 객체 생성이 가능하다. (읽기 쓰기모드는 r+, 쓰기모드는 w, 읽기 모드 r) File.open 메서드는 파일..