[후기] 열혈강의 TCP/IP 소켓 프로그래밍

열혈 TCP / IP 프로그래밍

  • 저자: 윤성우
  • 출판사: 오렌지 미디어
  • 기간: 2016.07.13 ~2016.07.15

키워드

네트워크 프로그래밍

  1. TCP / IP
  2. Socket Options
  3. Linux 기반의 네트워크 프로그래밍
  4. Windows 기반의 네트워크 프로그래밍

본것

네트워크 프로그래밍의 기초에 대한 설명이 단계별로 잘 되어 있는 책이라는 생각이듭니다.
소켓(Socket), 주소체계, TCP, UDP, Gracefull Shutdown, 소켓 옵션, 서버 아키텍쳐등 많은 내용이 아주 체계적으로 잘 되어 있습니다.

그리고 Linux와 Windows에서 다르게 구현 되는 부분을 잘 설명해 놨기 때문에 두가지 환경에서 모두 구현하는데 도움이 될 만한 책인 것 같습니다.

책 중간에 나오는 잠시 JAVA 얘기를: 열려있는 사고를 지니자! 는 간략하지만 제가 느끼는 부분과 비슷한 내용인 것 같습니다.

예전에 학원 강좌에서 Java 네트워크 부분에서 Java에서는 소켓을 연결하지 아주 쉽습니다.

Socket s = new Socket("192.168.10.1", 8888);

위와 같이만 하면 연결 끝입니다. 이런 내용을 듣고 네트워크 프로그래밍 뭐 별거 아니네... 이런 생각을 했는데 프로그래밍을 하면 할 수록 네트워크 부분은 점점 어려워 지는 것 같습니다.

깨달은것

멀티 프로세스 방식은 Java로 서버 개발을 하면서 사용한 적이 없고 멀티 플렉싱 방식은 Java NIO 패키지의 비동기 소켓으로 예제 정도만 구현을 해봤는데 이전 보다 조금 더 알게 된 것 같습니다.

그리고 Windows IOCP는 예전 한국 리눅스 유저 그룹 에서 EPOLL과 열딘 토론의 글을 본적이 있어서 관심은 있었지만 실제로 사용해 본적이 없어 어떤 시스템이라는 막연한 부분이 있었는데 대략적으로 어떤 흐름이다라는 것은 알게 되었습니다.

적용할 것

  • 멀티프로세스 방식, 멀티플렉싱 방식 그리고 멀티 스레드 방식의 서버를 각각 구현해 성능 테스트를 해보자.
  • Windows IOCP 서버를 구현해보자.
  • 네트워크프로그래밍 강좌에서 받은 Windows IOCP 배틀넷 서버 소스를 분석해보자.

[후기] 리눅스 그냥 재미로(Just for fun)

리눅스 그냥 재미로

  • 제목: 리눅스 그냥 재미로(Just for fun)
  • 저자: 리누스 토발즈, 데이비드 다이아몬트(안진환 역)
  • 출판사: 한겨례신문사
  • 기간: 2016.07.19~2016.07.19

본것

  • 리눅스를 만들게 된 동기와 오픈소스에 대한 철학을 볼 수 있다.
  • 과학 스스로는 돈을 벌어주지 못한다. 부를 창출하는 것은 과학의 부차적 효과이다. 오픈 소스도 마찬가지다.
  • 유닉스는 “작은 것이 아름답다” 라는 철학을 가지고 있다.

외에 전반적인 리누스가 왜 운영체제 개발을 시작했고 어떤식으로 오픈소스 프로젝트를 시작했는지 그리고 현재까지 유지할 수 있었던 방법은 어떤 것인지에 대한 이야기가 나와있다.

그리고 대학 연구조교를 나와 기업에 취직할 때도 비리눅스 기업에 취직하는 내용은 정말 대단한 사람이라는 생각이 들었다. 이익 보다는 소신을 지키는 내용이 멋있었다.

깨달은것

리누스는 컴퓨터를 처음 사용하면서 프로그래밍을 접하고 그것을 보다 효율적으로 사용하기 위한 방법을 많이 생각했던 것 같다. 나의 어린 시절과 비교를 하면 나는 대부분의 학생들과 마찬가지로 컴퓨터를 가지고 게임을 할 생각만 했지 컴퓨터를 가지고 프로그래밍을 할 생각은 못했던 것 같다.

물론 베이직(GW Basic) 언어를 이용하는 프로그래밍을 배우기는 했지만 그것은 단순 컴퓨터 학원의 커리큘럼 이었을 뿐 집에서 그것을 가지고 내가 원하는 기능을 직접 만들어 본다는 것은 생각조차 하지 않았던 것 같다.

Java라는 언어를 내 기반으로 두고 사용하기에 하드웨어에 대해 모른다는 것을 별로 민감하게 받아들이지 않았지만 좋은 개발자가 되기 위해서는 하드웨어에 대한 지식도 이제는 필수라고 생각한다.

적용할 것

  1. DOS와 같은 운영체제를 만들기(?)

솔직히 위의 운영체제 만들기는 어려울 것 같다는 생각이 들지만 한번 시도를 해보면 정말 많은 도움이 될 것 같다는 생각이 든다. 그렇기 때문에 적용할 것 에 추가해본다.

[여행후기] 오크밸리 리조트

오크밸리 리조트 & 수영장


  • 일정: 2016. 07. 01 ~ 2016. 07. 03 (2박 3일)
  • 누구랑: 안지기 아는 사람 가족(지우, 지호)과
  • 장점: 아름다운 풍경과 울창한 숲
  • 단점: 유아가 놀기에는 다소 차가운 수영장.

일본 출장 때문에 아이들과 못놀아줘서 기분도 낼겸해서 금요일 연차를 쓰고 오크밸리에 다녀왔습니다.
어디로 갈지 딱히 정하지 못했는데 쿠팡을 통해 저렴한 객실과 7/1일이 성수기로 포함되지 않았다는 점 때문에 오크밸리로 다녀왔습니다.

리조트는 평범했지만 주변 경관 및 진입로가 너무 잘되어 있어 깜짝 놀랬습니다.

겨울에 스키장으로 간다면 잘 못 느낄거 같은 풍경들이 여름이 가니 보여서 좋았습니다.

[키보드] Fujitsu – Libertouch

후지츠 리버터치

  • 장점: 부드러운 키감.
  • 단점: 87키가 아닌점.

후지츠 리버터치(출처: 아마존재팬)

 

 

일본 IT 전시회를 관람하기 위해 방문 한 김에 한국에서는 판매하지 않는 리버터치 를 구매했습니다. 리버터치는 중고나라에서 봐도 아직도 찾는 사람이 있을 정도로 키보드에 대한 평이 좋습니다.

한가지 키보드를 너무 오래 사용한 느낌이 있어 출장비를 아껴 키보드를 구매했습니다. 원래는 87키를 구매하려고 했으나 제가 착오를 한건지 오프라인 매장에서 판매를 안하는 건지 요도바시 카메라 아키하바라 점에서 찾질 못하고 어쩔수 없이 103키를 구매했습니다.

출장후에 쭉 사용하고 있는데 느낌이 아주 부드러운게 미끄러지는 듯한 타이핑이 가능합니다.  이 키보드를 쓰다가 다른 키보드를 못쓸정도로요..^^

작업환경이 여러개라 Mac에는 해피해킹 Windows에는 Libertouch 를 연결해서 사용하는데 해피해킹 으로 가서 타이핑을 하면 묵찍하다는 느낌이 듭니다. 그만큼 Libertouch 가 부드럽다는 것이겠죠..

[키보드] Truly Ergonomic

키보드 후기


 

  • 장점:  타이핑이 정말 편안하다.
  • 단점
    • 키 배열에 익숙해지는데 시간이 많이 걸린다. (처음치는 순간 멘붕)
    • 조합이 필요한 키를 사용하기가 어려울때가 있다.
    • Tab 키가 가운데 있어 shell 에서 자동완성 기능을 사용할 때 불편하다.

The only Truly Ergonomic Keyboard with mechanical keyswitches

2년전쯤에 키보드 타이핑중에 손목 통증이 있어 인체공학 디자인의 키보드를 찾고 있었습니다. 인체공학 키보드는 대학교때 사용하던 MS Natural keyboard 를 마지막으로 써보고 다른 제품은 아직 못써보고 있었습니다.
그렇지만 중고나라 눈팅중에 Truly Ergonomic 키보드를 발견하고는 직거래로 바로 받아왔습니다.

6개월 정도 사용했는데 단점도 많지만 손목 통증은 조금 완화되는 느낌입니다. 정확하게 제가 병원에서 진단을 받은 것도 아니기 때문에 어느정도 좋다라는 객관적인 증거는 없습니다. ^^

지금은 키보드 스위치가 몇개 고장나서 수리를 해야해서 못쓰고 있지만 조만간 사용할 예정입니다.

[캠핑후기] 포천 낭만가족캠핑장

포천 낭만 가족 캠핑장


  • 일정: 2016. 06. 04~2016. 06. 06 (2박 3일)
  • 누구랑: 안지기 아는 사람 가족과
  • 장점: 수영장, 인공 계곡(?)
  • 단점: 화장실과의 거리, 진입로 및 모래언덕

지난 주말 첫째가 캠핑, 캠핑 노래를 불러 다른 가족과 함께 캠핑을 다녀왔습니다.
같은날 캠핑하는 분들이 모두 매너가 좋은 분들만 모여 있었는지 아주 조용하고 편한하게 캠핑을 하고 왔습니다.

오랜만에 별도 많이 보고 나무도 많이 보고 했더니 힐링 되는 듯한 느낌이었습니다. 아이들과 너무 열심히 놀아서인지 몰라도 팔에 근육통도 생기고…^^

한가지 아쉬웠던 점은 진입로 및 캠핑장 내부 도로가 모래로 되어 있고 파인곳도 많아서 아이들이 미끄러지거나 차가 미끄러져서 휠스핀을 하는 것을 많이 봤습니다. 차는 상관 없었지만 아이들이 위험한게 조금 아쉬웠습니다.

그래도 최근에 일에 치여 살다가 나가서 콧바람을 쐬니 아주 좋았습니다.^^

2015년 정리

2015년 정리


2015년 한해는 2015년이 된지 얼마 안된거 같은데 마무리 되는 것처럼 빠르게 지나갔습니다.

블로그에 2015년 초에 게시한 내용을 토대로 정리해봤습니다.

2015년 목표


습관

  • 일반(20권)
  • 전공(10권)
  • 원서(10권)

나를 위한 투자

  • 배드민턴
  • 크로스핏
  • 등산
  • 자전거

가족

  • 아버지와 매달 목욕탕 함께 가기
  • 일주일에 하루는 가족의 날로 정하기

프로그래밍

  • AppStore에 어플리케이션 판매 하기
  • 자료구조
  • 알고리즘 정리
  • C# 개발 해보기
  • Mac용 어플리케이션 만들기

기타

  • 신규 아이템 확인

2015년 결과


습관

달성률 40%

일반서적(10권), 전공서적(5권), 원서(1권)

목표치보다 많은 책을 읽지는 않았지만 전반적으로 2014년에 비해 독서시간이 늘었습니다. 다만 원서 부분은 아직 저조합니다. 원서를 읽는 능력이 아직 많이 부족하기 때문에 초등학생, 중학생 수준의 책을 읽고 있습니다.

전공 서적은 개발 방법론과 소프트웨어 품질 향상을 위한 주제를 주로 읽었습니다.

일반 서적은 여행과 자기계발과 관련된 분야를 읽었습니다.

나를 위한 투자

달성률 20%

배드민턴, 크로스핏, 등산, 자전거등 여러 운동들을 하고 싶었지만 시간이 없다는 핑계와 부상으로 인해 대부분을 포기 했습니다.

그렇지만 약 5개월정도 1주에 3일 정도는 꾸준하게 웨이트 트레이닝을 하였습니다.

가족

  • 아버지와 매달 목욕탕 함께 가기
  • 일주일에 하루는 가족의 날로 정하기

달성률 0%

가족과 함께 하는 부분은 둘째가 나오면서 더욱 신경 써야 되는 부분이지만 가장 못한 것 같습니다. 2016년도는 더욱 노력하여 가족과 함께 하는 시간을 늘려야 될 것 같습니다.

프로그래밍

달성률 40%

[앱스토어 등록]
애플스토어에 개인용 어플리케이션은 총 2개를 등록하였습니다.

1. MERS Korea

한국에 메르스가 퍼지는 시점을 기반으로 개발하여 주춤할 시기에 개발을 완료 하였습니다. 심사중 반려되어 재심사를 요청하는 과정이 생각보다 길어져 출시가 늦었습니다. 그렇지만 서버와 클라이언트를 모두 작성하고 앱 제작 처음부터 끝까지 했기 때문에 재미는 있었습니다.

2. HOW2TOEFL

대학 친구가 기획을 하고 그 기획안대로 개발한 앱입니다. 원어민을 통해서 음원을 녹음하고 녹음된 음원 파일을 재생하는 형태로 하였는데 생각보다 시간이 많이 걸렸습니다.

판매 결과는 최악이지만 많은 교훈을 얻을 수 있었습니다.

[자료구조, 알고리즘 정리]

자료구조와 알고리즘은 따로 정리는 못했고 프로젝트오일러을 통해서 지속적으로 공부를 하고 있습니다.

[C# 개발 해보기]

회사에서 필요로 하는 타이머 어플리케이션을 개발했습니다. 간단한 어플리케이션이지만 요청사항에 까다로운 부분이 있어서 애매한 부분이 있었습니다.

다시 느낀 결론은 UI프로그램은 힘들다.

[Mac용 어플리케이션 만들기]

화면이 없는 OSX용 프로그램을 개발했지만 화면이 있는 것은 하지 않아서 안한것으로 간주하겠습니다.

기타

[신규 아이템 확인]

앱 개발의 필요성을 느끼면서 지속적으로 모니터링하고 메모하고 생각하고 있습니다. 이 글을 쓰고 있는 시점에도 어떤 어플리케이션이 좋은 아이템이 될지 생각하고 있습니다. 아마 다음에 개발하는 어플리케이션은 단순한 게임이 되지 않을까 하는 생각입니다.

결론

1년이란 시간은 연초에 보면 참으로 긴 시간인거 같지만 연말에 보면 정말 빠르게 지나가는 시간인거 같습니다. 새삼 시간관리및 자기관리의 필요성을 느낍니다.

2016년은 보다 현실적은 계획과 세운 계획을 철저히 실천하는 것을 목표로 해야겠습니다.

이상입니다.