앞서 프로세스에 대한 정의와 java 프로그래밍에서 프로세스를 만드는 방법에 대해 알아봤다. 하지만 우리는 java 프로그램을 통해 외부 프로세스를 정의하는데 그치지 않는다. 프로세스를 완벽하게 제어하는데 관심이 있을 것이다. 프로세스 처리 영역은 운영체제의 몫이다. 그렇기 때문에 JVM에서 프로세스 사용 목록을 알기 위해서는 별도의 함수 사용이 필요하다. 1. Process Input/Output Stream Java에서 데이터를 입력하고 받는 것은 Stream 구조로 되어 있다. Java에서 제어하는 프로세스 역시 Stream으로 데이터를 주고 받는다. 또한 Process 클래스에서 스트림에 대한 메소드가 정의 되어 있다. 만약 프로세스의 데이터 제어가 필요한 경우 이 Stream 클래스와 메소드를 ..
아침에 일어나 아침을 먹고 샤워를 한다. 지하철을 타고 직장에 가 일을 하거나 학교에 가 공부를 한다. 저녁이 되면 다시 집으로 돌아와 잠을 잔다. 우리의 일상은 매우 규칙적이고 일관적이다. 자기계발서나 유튜브에서는 자기가 하고 싶은일 하면서 살아야 된다고 외치는데 도대체 어떻게 해야 하고 싶은 일을 찾는 지는 알려주지 않는다. 내가 진정 원하는 게 무엇인지 고민하라고 한다. 그래서 나답게 살라고는 하는데 쳇바퀴 같은 인생속에서 나 다운게 뭔지 알 턱이 없다. 학교와 직장을 생각해보면 비슷한 나이 또래에 사람들이 모두 동일한 교육과 업무를 하고 있다. 옆사람이 하는 일과 약간의 차이는 있을 수 있으나 막상 보면 크게 다르지 않다. 사실 공부 잘하는 학생에게는 어떤 학문이 주어져도 쉽게 습득하고 일 잘하는..
네트워크 프로그래밍을 알기위해서는 소프트웨어의 기초를 알아야한다. 이런 기초가 되는 것 중 대표적인 부분이 바로 '프로세스'와 '스레드'이다. 아마 소프트웨어에 대해 한번이라도 배워본 사람이라면 저 두 말을 들어본 적이 있을 것이다. 프로세스는 또 일상생활에서 많이 쓰는 단어라 이해하는데 수월하다. 하지만 컴퓨터 공학적으로 두 용어를 정의하라고 했을때 명확하게 대답하는 사람은 많이 없을 것이다. 그래서 이번 시간부터 프로세스와 스레드의 정확한 개념을 잡고 가보자. 현재 CPU에서 실행되고 있는 프로세스 1. 프로세스란? 우리가 Java 프로그램 하나를 만들었다. 어떤 프로그램이든 상관 없다. 아주 단순한 'Hello World' 프로그램을 개발했다고 하자. 프로그램은 우리가 정한 일종의 정의다. 이 프로..
이 책을 다 읽고나니 멋진 글을 써야 할 것만 같다. 유시민 작가님의 글솜씨에 감탄을 한다. 이 책에서 그는 좋은 글을 조건을 조목조목 소개시켜준다. 그리고 좋은 글의 바탕에는 글을 쓰는 사람의 진심이 담겨져 있어야 한다고 말한다. 그의 글에는 유토피아적 발상이 깊게 깔려있는 것만 같다. 대다수에 사람들이 유작가님 처럼 생각한다면 정의롭고 자유로운 세상이 올것이다. 그렇지만, 나를 비롯한 대다수의 사람들은 유작가처럼 진심을 담아서 글을 쓰진 않는다. 대부분의 세상 사람들은 그릇이 작기에 자신의 진심인냥 거짓의 글을 쓴다. 글로써 자신과 남을 속이는 사람들이 많다. 당당한 사람들이 페이스북 부계정을 만들어서 악플을 올리지 않는다. 사람들은 자신을 속이기 위해 SNS 부계정을 만들고 이 안에서는 '현실의 나..
요즘 글쓰는게 너무 쉽다. 나는 주로 카페에 가서 글을 쓴다. 우선 커피를 시키고 자리에 앉아 유튜브에서 내가 좋아하는 노래를 하나 듣는다. 일련의 자기암시인데, 내가 쓸려는 글의 감정과 최대한 비슷한 노래 하나를 듣는다. 가령 개발에 관한 글을 쓸때는 집중 텐션을 높이기 위해 주로 힙합을 듣고, 차분한 글을 쓸때는 발라드를 듣는다. 이 활동으로 글쓰기 효율이 크게 상승하지는 않는 것 같다. 그래도 나에겐 이것이 일종의 글쓰기 루틴이 되어버렸다. 루틴이 끝난 뒤 글을 써내려가기 시작한다. 예전에는 카페에 앉아 글 하나를 쓰는게 너무 힘들었다. 도저히 다음 문장이 생각나지 않고, 몇번을 쓰고 지우며 글을 썻다. 한 문장 쓰는데 몇십분씩 걸린 일도 비일비재했다. 초고를 쓰고 퇴고를 할 때까지 글을 수차례 읽..
네트워크 프로그래밍에서 제일 중요한 요소 중 하나가 바로 입출력(I/O)이다. 우리가 사용하는 네트워크는 앞서 본대로 총 7개의 계층 사이에서 데이터의 송수신을 의미한다. 그렇기 때문에 네트워크 프로그래밍을 하기 위해선 해당 프로그램의 입출력에 대해 완벽하게 알고 있어야 한다. 이전에도 한번 소개를 한 적이 있었지만, 다시 한번 Java의 입출력에 대해서 알아 볼 것이고. 대표적인 입출력 방식인 스트림을 기반으로 알아 볼 것이다. 만약 Java가 아닌 다른 언어로 네트워킹 프로그램을 만들어야 하는 사람들에게 이번 글을 그리 중요하지 않을 것이다. 1. 출력 스트림 자바에서 사용하는 최상위 스트림 클래스는 java.io.OutputStream이다. 그리고 이 클래스는 위에 보이는 서브클래스들을 갖고 있다...
영국의 유명한 역사학자 존 키건이 쓴 2차세계대전사를 드디어 다 읽게 되었다. 책의 양이 많기도 했으나 그동안 바쁘다는 핑계로 조금씩 밖에 읽지 못했는데, 이번 주말에 기차를 타고 지방으로 내려갈 일이 생겨 책을 챙기고, 마침내 책의 마지막 페이지를 넘겼다. 거의 3개월 가량의 시간을 쏟아 부어 한권의 책을 완독을 할 수 있었다. 책의 양이 너무 방대해서 다른 책으로 갈아탈까 몇번이나 고민했지만, 끝을 봐야 직성이 풀리는 내 성격 상 끝까지 참으며 읽었다. 이 책을 읽으면서 갔던 카페만 수십곳이다. 책 값보다 커피 마시면서 쓴 돈이 몇배나 많을 듯하다. 워낙 전쟁사를 좋아하는 본인이라 관련된 지식은 많았는데 막상 세계 2차대전에 대한 내용을 A 부터 Z 까지 읽은 적은 없었다. 기회가 되면 2차대전에 대..
우리의 자유가 또 억압받고있다. 2016년 대테러 방지법으로 자유를 억압하더니 이젠 네트워크 통제를 시작했다. 이런 쪽으로는 워낙 관심이 많은 필자라 설마 했는데 2월 11일 드디어 정부가 네트워크 통제 작업을 실시 했다. 대테러 방지법은 국민 자유 침해 범위에 대한 정의가 불명확했다면, 이번 정책은 사실 정부의 정책 의도와 국민들의 우려 사항이 명백하다. 이번 정책에서 가지고 있는 의문점은 크게 두 가지이다. 우선 이번 https차단은 일부 음란 사이트에 해당하는건 분명 맞다. 이는 분명한 팩트다. 여기서 드는 첫 번째 의문점은 이 의도를 국가적 차원으로 막는 것이 옳은가와 옳다고 한다면 과연 이번 차단으로 원하는 목적을 이룰 수 있는가이다. 만약 목적을 이룰 수 없는 것이라면 정책 수립의 의미가 패색..
우리는 웹사이트에서 원하는 정보를 얻기 위해 웹브라우저에 주소를 쳐서 들어간다. 물론, 세상이 너무 좋아져서 도메인이라고 하는 주소를 치지 않더라도 원하는 정보를 쉽게 가져올 수 있다. 이 글을 읽기 위해 웹 브라우저 위에 있는 주소를 입력한 사람은 거의 없다. 우리가 인터넷이 연결된 환경에서 주소를 입력하면 총 7계의 단계를 거쳐 해당 정보가 있는 지점에 도달하게 된다. 이 각각의 계층을 OSI 7계층 이라고 하며, 앞으로 진행할 네트워크 프로그래밍을 알아가는데 있어 반드시 알아야 할 기본 정보와도 같다. 1. OSI 7계층이란? OSI는 Open Systems Interconnection 의 줄임말로, 국제 표준 기구 ISO에서 지정한 컴퓨터 프로토콜 네트워킹에 관한 표준이다. 즉 우리가 인터넷 환경..
많은 이들이 명절에 친척 어르신들을 만나는 걸 꺼려한다. 평상시에는 연락도 잘 안하다가 명절에 오랜만에 봐서는 취업을 했는지 결혼은 했는지 묻곤 한다. 서로 다른 세대 간에 대화할 주제도 별로 없고 가만히 있기엔 민망하니 이런 저런 말 하는 건 이해한다. 근데 질문하는건 이해하는데 일을 추천해준다거나 혹은 누군가 소개시켜 준다고 한다는 건 정말 귀찮은 일이다. 걱정해주는 것 까지는 좋은데 걱정과 오지랖은 엄연히 다르다는 것을 알아야한다. 타인에 대한 걱정이 간섭으로 변하고 이건 바로 자신에 대한 과신으로 쉽게 바뀐다. 명절에만 오지라퍼들을 볼 수 있는건 아니다. 조금만 친해졌다 싶으면 넌 어떤 사람인것 같아 혹은 너라면 그럴거 같아 이런 소릴하는 사람들이 종종 있다. 오해 할 수도 있는데 이런 사람들을 ..