나는 회사에서 프로그램 개발을 하고 있다. 사람들은 자기 일이 세상에서 가장 어렵다고 말하듯 프로그램 개발은 결코 쉽지 않은 작업이다. 프로그램의 구조를 파악하고 이를 일종의 스크립트로 옮겨야 하는 작업이다. 근데 이게 남들이 미리 작성해 놓은 코드 보고 짜깁기해서 개발하면 개발의 어려움을 크게 단축 시킬 수 있다. 뭐 그래도 대강 돌아가기는 한다. 근데 짜깁기하는 과정에서 필요없는 코드들이 계속 스크립트에 붙게 될 뿐만 아니라 더 쉬운 해결 방법이 있음에도 고민하지 않게 되는 악순환에 빠지게 된다. 물론, 기존의 코드를 참고 하는 것은 매우 필요한 작업이다. 하지만 가장 좋은 프로그램은 스크립트가 심플해야 한다. 처음에 고민하는 과정은 조금 힘들겠지만, 심플한 코드는 너무 많은 이점을 가지고 있다. 우..
같은 프로그램 안에서 작동하는 스레드의 경우 대부분 서로간에 리소스를 공유하게 된다. 만약 스레드가 동시에 공유 리소스에 접근해 값을 변경하게 되면 프로그램에는 치명적인 오류가 발생한다. 스레드 동기화는 각 스레드가 공유 영역을 바라보고 있을 떄, 어떤 스레드를 먼저 접근 시키고 공유 영역의 값을 두개의 스레드가 동시에 접근하지 못하도록 막는 기능을 수행한다. 1. 스레드 동기화(Thread Synchronization) 스레드 동기화는 공유 리소스를 가지고 있는 프로그램에서 스레드 간의 접근을 정의하는 것을 의미한다. 스레드를 동기화 시키기 위해 다양한 방법론이 존재한다. 하나의 스레드가 작업을 끝낼 때 까지 공유 리소스에게 독점적인 권한을 주는 방법, 일정한 시간 간격을 두고 스레드의 공유 리소스 배..
스레드 실행은 run() 과 start() 메소드를 활용한다. 하지만, 이 두 메소드는 값을 반환하지 않는다. 스레드로 부터 값을 반환 받기 위해서는 다른 방법을 사용해야 한다. 1. 스레드의 결과 출력 우리가 숫자를 입력하면 그것을 일련의 복호화 과정을 거쳐 문자열로 만드는 스레드가 존재한다고 생각해보자. 예를 들어 우리가 계좌번호를 입력해야 하는데 그냥 숫자로 데이터베이스에 전송된다면, 보안 문제가 발생할지도 모른다. 그래서 우리는 이 문제를 해결하기 위한 복호화 프로그램을 만들기로 했다. 암호화 방법은 아주 단순하게 Integer 계좌번호를 입력 받아서 각각의 숫자를 문자열로 변환하는 방법을 사용하고자 한다. 프로그램을 아래와 같이 작성할 수 있을 것이다. MakeString.java 1234567..
미국발 세계 경제 대공황 1929년 10월 뉴욕 증권시장에 주가 대폭락 사건이 일어난다. 세계 1차대전 후 미국은 전쟁에 대한 직접적인 피해가 적었고, 유럽에서는 계속 전후 복구를 위해 미국의 자본을 많이 끌어 올 수밖에 없었다. 그렇게 자연스레 미국의 경제는 호황을 누리게 된다. 미국이 강대국 반열에서 초강대국으로 접어들고 있었던 시점이었다. 1929년 1월 1일자 뉴욕 타임스의 사설만 보더라도 당시 미국이 얼마나 큰 호황을 누리고 있었는지, 또한 미국인들이 얼마나 자만심에 빠져 살고 있었는지 알 수 있다. “미국은 지난 12개월 동안 유사 이래의 최고의 번영을 구가했다. 과거에 근거해 미래를 예측한다면 올해는 축복과 희망의 한 해가 될것이다.” 하지만, 미국의 호황은 오래가지 못했다. 그해 10월 정..
일생일대의 기회를 잡은 원균 1597년 여름 일본은 조선에 대한 2차 침공을 가한다. 당시 일본은 부산에 군대를 주둔시키고 명나라와 평화 협정을 진행중이었다. 하지만, 양국의 협상이 원활하게 이루어지지 않았고 도요토미 히데요시는 조선에 대한 두번째 공격을 명령한다. 이것이 바로 정유재란이다. 조선의 상황은 나쁘지 않았다. 1592년 일본 군대에게 호되게 당한 경험이 있던 조선은 다시 한번 일본에 의해 국토가 유린당하는 슬픔을 겪지 않기 위해 만반의 준비를 가했다. 조선은 의도적으로 해안 도시에서 육지로 올라가는 도로를 무너뜨리면서, 일본군이 쉽게 보급을 하지 못하도록 손을 쓰고 있었다. 특히 이순신을 중심으로 조선은 정예 수군을 보유하게 되었다. 삼도수군통제사였던 이순신은 다시 있을 전쟁을 대비해 다량의..
타인의 비웃음은 참 무섭다. 아무리 강력한 무기를 가지고 있더라도 타인의 비웃음은 우리의 힘을 완전히 빠지게 만든다. 인간은 사회적 동물이기에 남들 눈을 정말 많이 의식하고 내가 가는 길이 맞는 지 매 순간마다 고민한다. 우리의 꿈을 이야기 할때도 마찬가지다. 가슴속에 멋진 꿈을 품고 있는 사람이 겉으로 그 꿈을 잘 드러내지 않는 이유. 그리고 그 꿈에 대한 확신이 부족한 이유는 바로 타인의 비웃음이 두려워서다. 우린 우리의 꿈을 얘기하면 가장 많이 듣는 말은 '니가 그걸 한다고?', '니가 잘도 하겠다.', '지금 하는거나 열심히 해' 이런 말들이다. 이 말들은 당신은 점점 꿈을 얘기하는게 두려워 지고 꿈을 이룰 동력을 잃게 된다. 꿈을 꾸는 것 보다 어려운 것이 꿈에 대한 계획을 세우는 것이고, 계획..
(출처 : 베르사유 조약 - 위키백과) 베르사유 조약의 1320억 마르크 세계 1차대전에서 독일은 패전국이 되었고, 영국과 프랑스는 승전국이 되었다. 세계 1차대전에 많은 국력을 소모했던 승전국이었던 영국과 프랑스는 패전국인 독일에 어마어마한 배상금을 요구하게 된다. 과거 비스마크르에게 호되게 당한 전적이 있는 유럽 국가들은 이번 기회로 독일을 회생 불가능하게 만드는 것이 최우선 목표였다. 연합국은 독일에 1320억 마르크의 배상을 요구했다. 1320억 마르크라고 하면 감이 안올 것이다. 당시 조약에는 1320억 마르크를 금으로 반환할 것을 요구했다. 전쟁을 거치면서 전세계적으로 인플레이션 현상이 일어났다. 자연스럽게 화폐 가치는 하락되고 현물의 가치는 어마어마하게 치솟는 상황이었다. 이런 현상은 패전국..
우리가 만든 프로그램을 작동시키면 프로세스가 생성되어 CPU로부터 메모리 영역을 할당 받고 명령을 수행한다는 것까지는 이제 알겠다. 하지만, 우리는 네트워크 서비스를 프로그래밍 해야한다. 만약 우리가 만든 네트워크 프로그램에 수천명이 동시에 접속한다고 생각하자. 이 수천명에게 각각 프로세스를 만들어야 한다고 가정해보자. 모든 사람에게 CPU가 메모리 영역을 할당해주어야 한다. 장비의 성능이 좋더라고 운영체제는 무거운 프로세스의 무게를 버티지 못하게 된다. 그래서 새로 나온 개념이 바로 스레드이다. 1. 스레드(Thread)란? 모든 카페에는 주문을 받는 카운터 직원이 존재한다. 조용한 동네 카페라면 한명의 카운터 직원이 모든 주문을 충분히 처리 가능하다. 하지만, 우리가 이번에 만드려는 프로그램은 대형 ..
대한민국 국가의 역사는 꽤나 짧다. 근데 이 짧은 기간에도 시작점에 대한 논쟁이 존재한다. 누군가는 1919년 4월 11일로 보기도하고, 누군가는 1948년 8월 15일로 보기도 한다. 어느 시점이 대한민국의 시작점이라고 생각하는지는 당신의 자유다. 자신의 의견을 자유롭게 낼 수 있어야 한다. 늘 말했듯이 건강한 토론을 해보자. 나와 반대되는 의견을 가졌다고 이념 몰이를 해선 안된다. 나는 아래 근거들을 기반으로 임시정부 수립일이 대한민국 역사의 시작 점이라고 생각한다. 현대 사회학자들이 말하는 국가의 3요소는 국민, 영토, 주권이다. 하지만 대한민국 1919년 대한민국 임시정부에는 영토와 주권이 없었다. 그래서 이 시기를 국가의 시작으로 인정하지 않기도 한다. 하지만, 임시정부 수립 이유가 뺏긴 주권과..
난 다이어트가 인류에 매우 부정적인 영향을 끼치고 있다고 생각한다. 무슨 뚱딴지 같은 소리냐고 말할지 모르겠지만 다이어트는 생물학적으로 봤을때, 인류 발전에 그닥 도움이 되는 행위는 아니다. 우리나라와 같은 선진국은 식량이 매우 풍족하고 먹을게 넘쳐나기에 굶어 죽는 광경을 거의 보기 힘들다. 하지만 다른 아시아 국가와 아프리카 국가들은 전쟁과 가난 속에서 살아가고 있기에, 굶어 죽는 사람이 하루에도 몇천명씩 나오고 있다. 이는 약소국에만 해당되는 것도 아니다. 사실 한반도 역시 전쟁의 위험이 도사리고 있고 다른 강대국들도 안심할 수는 없다. 매드맥스에 나오는 핵전쟁이 언제 일어날 지도 모르는 일이다. 또는 자연재해나 운석 충돌이 일어나 당장 내일 지구에 식량이 바닥나게 된다면 가장 오래 살아남을 사람들은..