여러 소프트웨어 개발자들이 자신이 걸어온 길을 후배에게 들려주듯이 담은 책. 저자들은 다양한 곳에서 각자 다른 경험을 하며 개발자로 살았지만, 어느정도 공통적인 점을 볼 수 있었다. 그것은 자기 발전을 위해서 노력하게되는 어떤 자극이 있었다는 것이다.

그 자극의 형태가 같이 일하는 실력이 뛰어난 동료이기도 했고, 기술사 시험이었기도 했으며, 책을 집필하는 것이기도 했다. 그렇게 형태는 달랐지만, 그 모두가 계속 공부하도록 하는 자극이 된 것으로 보였다. 뛰어난 동료를 보고 나의 부족한 점을 깨닫게 되어 그 부족함을 채우기위해서 노력하는 것이나, 어려운 기술사 시험을 준비하면서, 혹은 기술사 자격을 취득했기 때문에 거기에 걸맞는 실력을 갖추기 위해서 더 노력하는 것, 책을 집필하기 위해서 더 공부하고 집중하게 되는 것, 이 모두가 그런 강한 동기가 부여되지 않으면 쉽지 않은 일이다.

계속 개발자로 살아가기 위해서는 끊임없이 학습해야할텐데, 이런 동기 부여가 꼭 필요한 것 같다는 생각이 들었다.


프로그래머 그 다음 이야기

저자
임백준, 오병곤, 이춘식, 이주연, 박재성 지음
출판사
로드북 | 2011-07-08 출간
카테고리
컴퓨터/IT
책소개
프로그래머 평균 정년 35세, 당신은 무엇을 하고 계십니까? 시...
가격비교


우리나라 소프트웨어 업계에 만연해있는 문제점을 지적하는 책. 제목만 보았을때에는 그냥 우리나라와 미국 소프트웨어 업계의 차이에 대해서 약간은 뜬구름 잡는 듯한 이야기를 다룬 책이라고 생각했는데, 읽어보니 나의 오해였다는 것을 알게되었다.

저자는 소프트웨어 요구사항 분석서(Software Requirements Specification, SRS)의 중요성을 거듭 이야기하는데, 결국 "분석-설계"가 제대로 되지 않는 것이, 우리나라 소프트웨어 업계의 문제라는 어찌보면 뻔해보이는 이야기를 한다. 하지만, 이 분석의 문제를 개발자의 문제 정의 능력 수준로 끌어내리니 훨씬 잘 이해되었다.

책에서 이야기한 실리콘밸리 회사의 인터뷰 예를 보면, "숫자 3개를 정렬"하라는 간단해보이는 문제가, 사실을 제대로 정의된 문제가 아니라는 사실은 나도 생각치 못한 문제인데, 아마 과제가 주어지면 문제는 절대적이라고 전제하고 경주하듯이 풀어내는데에만 급급했던 교육과정을 거쳐왔기 때문에 생긴 버릇이 아닐까 생각도 들었다. 이런 문제정의도 제대로 되지 않는데, 무슨 요구사항 분석을 하겠으며, 그런 분석을 통해 설계를 한 소프트웨어가 계획대로 개발된다면, 말 그대로 소 뒷걸음질치다 쥐잡은 거나 다름 없을 것이다.

개발 방법론이나 도구의 도입에도 유행에 편승하지 말라는 이야기를 하는데, 저런 "수단"보다는 왜 저런 것들이 나오고 도입하고 있는지 그 "목표"에 집중하라고 안내한다. 소프트웨어 개발을 한다면서, 지금 내가 하고 있는 행위의 궁극적인 목표가 무엇인지 고민해야한다는 것이다.

오랜만에 읽고나서 많이 생각하게 된 책이었다.

작가 블로그 : http://ikwisdom.com


글로벌 소프트웨어를 말하다, 지혜

저자
김익환 지음
출판사
한빛미디어 | 2014-06-05 출간
카테고리
컴퓨터/IT
책소개
이 책이 제시하는 핵심 내용 기후와 토양에 따라 귤이 되기도 하...
가격비교


자바 쓰레드 관련 문제/메모리 관련문제를 다루는 방법, 자바에서 장애 진단을 도와주는 툴과 리눅스 시스템 모니터링 도구 소개와 장애 진단 절차를 소개하고 있다.

자바 애플리케이션 운영 중이거나 리눅스 시스템을 운영 중이라면 볼만한 책인 것 같다.


트러블 슈팅 이야기

저자
이상민 지음
출판사
한빛미디어 | 2011-06-10 출간
카테고리
컴퓨터/IT
책소개
이 책이 제시하는 핵심 내용 자바 시스템에서 문제가 발생했을 때...
가격비교


PHP Best Practices를 읽다가 내친 김에 번역을 했는데, 이걸로 모던PUG에서 "UTF-8 in PHP"라는 주제로 발표까지 하게 되었다. 별 내용은 아니라서 발표할 것까지는 없다고 생각했는데, 발표 준비를 한 덕분에 PHP의 UTF-8 지원에 대해서 정리해볼 수 있었다.

PHP7에서 기본 문자열이 유니코드(UTF-8)로 되는 것으로 알고 있었기때문에 곧 필요없어질 내용이라고 생각했는데, 조사하다보니 PHP7에서도 유니코드 지원 상황은 변함이 없는 것으로 확인되었다. RFC에 UString 클래스 제안이 있던 정도였지만, 이마저도 통과되지 않았다.

가장 흥미로웠던 것은 MySQL의 "utf8mb4" 인코딩이었다. UTF-8에서 4바이트를 사용하는 문자가 있다는 것은 어렴풋이 알고 있었지만, 보통 사용하는 "utf8" 인코딩은 4바이트 문자를 저장하지 못한다는 사실은 모르고 있었다. 이것 때문에 UTF-8의 "Plane"이라는 것에 대해서도 알아보게 되었다.

별 내용은 없지만, 아래는 발표때 사용한 슬라이드이다.


뭐라고 불러야할지 잘 모르겠지만, 옛날에 책을 읽다가 'A라면 XX페이지로, B라면 OO페이지로'라는 문구가 나오면 원하는 선택지를 골라서 페이지를 넘겨보던 책이 있었다. 말하자면 비주얼 노블 게임의 원조라고 할만한데, 이 책도 그런 형식으로 만들어졌다.

이 책을 읽다보면 페이지를 선택해야할 시점이 오는데, 잘못된 선택을 하게되면 불행한 결말을 맺게 된다. 책을 읽으면서 애자일 컨설턴트로서 "드림팀"이 살아남을 수 있도록 올바른 선택을 해서 도와야한다. 그러면서 자연스럽게 애자일을 팀에 정착시키는 방법을 마치 옆에서 지켜보듯이 엿볼 수 있다.

책을 읽고나서 일을 진행하는 것도 역시 사람이기 때문에 일을 하기 위해서는 동기를 부여하고, 신뢰를 얻는 일이 무척 중요하다는 생각이 들었다.


드림팀의 악몽 애자일로 뒤엎기

저자
포샤 텅 지음
출판사
한빛미디어 | 2014-05-20 출간
카테고리
컴퓨터/IT
책소개
매 순간 두 가지의 갈림길, 서로 다른 여덟 가지 결과, 당신의...
가격비교


어쩌다보니 코딩 호러의 이펙티브 프로그래밍을 읽고나서 바로 이 책도 읽어야겠다고 생각한지 1년 이상 지나서야 읽게 되었다. 이 책 역시 블로그를 책으로 만든 것이라서 링크들이 많이 있는데, 책 소개 페이지의 관련 자료 항목에 잘 정리되어있어서 찾아보기 편하게 해 놓았다.

이 책 역시 재미있고 유용한 정보들이 많이 있었다. 몇가지만 여기에 적어본다.

... 나는 아이폰에 있는 버튼이 나로 하여금 너무나 자주 생각하게 만들기 때문에 아예 사용하지 않는 단계에 이르렀다. 하나밖에 없는 그 버튼이 너무나 자주 오용된 것이다.

"단 한개의 버튼이라는 신화" 중에서(p.140)

... 하지만 사용자들은 뭔가를 입력하기 전에 아무것도 읽으려고 하지 않는다. 심지어 우리와 같은 소위 전문적인 컴퓨터 사용자들조차 말이다.

"그렇지만 그저 하나만 더 있을 뿐이다." 중에서(p.161)



코딩 호러가 들려주는 진짜 소프트웨어 개발 이야기

저자
제프 앳우드 지음
출판사
위키북스 | 2013-11-28 출간
카테고리
컴퓨터/IT
책소개
코딩 호러 블로그 운영자이자 스택 오버플로우의 공동 창업자가 들...
가격비교


Windows 7에서 네트워크 드라이브가 표시되지 않을때 대체방법을 포스팅한 적이 있는데, Windows 8에서 동일한 문제가 발생했지만, 이 방법으로도 해결되지 않는 사례가 있었다. 이번에는 아래와 같이 다른 방법으로 해결했다.

  1. 제어판을 열어서, 관리도구를 열고, 로컬 보안 정책을 실행한다.
  2. 좌측의 트리에서 로컬 정책 - 보안 옵션을 선택한다.
  3. 우측 목록에서 "네트워크 보안: LAN Manager 인증 수준"을 클릭하고 나오는 팝업에서 "LM 및 NTLM 응답 보내기"를 골라서 설정한다.
  4. 우측 목록에서 "네트워크 보안: NTLM SSP기반(보안 RPC 포함) 서버에 대한 최소 세션 보안"을 클릭하여 나오는 팝업에서 "128비트 암호화 필요"를 체크 해제한다.
  5. Windows 리부팅

참고 : http://www.eightforums.com/network-sharing/18056-w2k3-server-can-access-w8-w8-computer-cant-see-w2k-server.html

월의 몇 주차를 어떻게 계산해야할지 찾아보았지만, 마땅한 표준은 존재하지 않았다. 하지만, 해당 년도의 첫 주 계산은 ISO 8601 표준에 정해져있다는 것을 알게되었다. ISO 8601 표준의 위키피디아 해당 항목을 보면 매 해의 첫주의 정의는 아래와 같이 설명될 수 있다고 한다,

  • the week with the year's first Thursday in it (the formal ISO definition),
  • the week with 4 January in it,
  • the first week with the majority (four or more) of its days in the starting year, and
  • the week starting with the Monday in the period 29 December – 4 January.

가장 간단한 설명은 1월 4일이 포함된 주가 첫주라고 보면 된다는 것이다. 년에 관한 것만 나와있어서 그다지 도움은 안됐지만, 한가지 또 알게 된 사실은 ISO 8601 표준에서 "주"는 월요일에서 시작해서 일요일로 끝나는 것으로 본다.

하지만, 달력에는 주로 일요일이 시작인 것처럼 나와있는 경우가 많아서 한주의 시작요일을 변경할 수 있도록 해서 한번 만들어봤다.


'Developing' 카테고리의 다른 글

PHP에서의 UTF-8 지원  (0) 2015.06.08
PHP로 해당 월의 몇주차인지 계산하기  (0) 2015.03.03
PHP 에러(Error)를 예외(Exception)로 변환하기  (0) 2015.01.30
PHP 에서 IE 구분  (0) 2015.01.19

MySQL의 Replication에서 쿼리에 문제가 생겨서 중지되는 경우가 가끔 있다. 그때마다 재시작하는 방법이 생각나지 않으면 찾아보는게 귀찮아서 여기에 간단히 정리해둔다.

mysql> SHOW SLAVE STATUS \G
(문제된 쿼리 확인)
mysql> STOP SLAVE;
(문제된 쿼리 처리)
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> START SLAVE;

참고 : https://www.howtoforge.com/how-to-repair-mysql-replication

fstab 파일의 가장 위에 보면 보통 아래와 같은 설명이 달려있다.

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

앞의 네 항목은 딱 보면 알만한 내용들이라 그렇게 어렵지 않다.

  1. file system : 마운트 할 파일 시스템 (/dev/sda, UUID=BLAHBLAH..., proc 등)
  2. mount point : 마운트할 경로 (/, /mnt/usb 등)
  3. type : 마운트할 파일 시스템의 타입  (ext4, ntfs 등)
  4. options : 마운트할 때 줄 옵션 (rw, ro, noexec 등)

문제는 마지막 두 항목은 dump나 pass라는 이름만 보고는 어떤 역할을 하는지 알기 힘들다는 것이다. 이미 설정되어있는 값을 보아도 0이나 1같은 숫자 뿐이다. 이런걸 알아보려면 역시 Manpage가 우선이다. Manpage를 보면 마지막 두 항목은 다음과 같이 설명되어 있다.

The fifth field (fs_freq).
This field is used for these filesystems by the dump(8) command to  determine which filesystems need to be dumped.  If the fifth field is not present, a value of zero is returned and dump will assume that the filesystem does not need to be dumped.

The sixth field (fs_passno).
This field is used by the fsck(8) program to determine the order in which filesystem checks are done at reboot  time. The root filesystem  should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2.  Filesystems within a drive will be checked sequentially, but filesystems on different drives will be checked at the same time to utilize  parallelism available in the hardware.  If the sixth field is not present or zero, a value of zero is returned and fsck will assume that  the filesystem does not need to be checked.

다시 말하자면, dump라고 되어있는 다섯번째 항목은 해당 파일 시스템이 dump가 필요한지 여부를 설정하는 것이고, 마지막 여섯번째 항목은 리부팅시에 파일시스템을 검사할지 여부를 설정하는 것이다. 파일 시스템을 dump해야한다면 다섯번째 항목을 1로, 아니면 0으로 하면 되고, 파일 시스템을 리부팅 시에 검사하려면 여섯번째 항목을 1보다 큰 값으로, 필요없으면 0으로 하면 된다. 검사는 1부터 순서대로 한다.

'Operating' 카테고리의 다른 글

MySQL Replication 복구  (0) 2015.02.05
fstab 마지막 두 항목의 의미 - dump, pass  (0) 2015.02.03
리눅스 tmp 디렉토리 파일 시스템  (0) 2015.02.02
vipw - passwd 파일 편집  (0) 2015.01.31

+ Recent posts