Browsed by
[Author:] skanto

Dijkstra Algorithm Explained

Dijkstra Algorithm Explained

개요 이 글은 자동차 내비게이션의 경로탐색 또는 그래프 이론에서 접하는 최단거리 탐색에 대해 설명한다. 출발지와 목적지 사이의 최단거리 경로탐색에 활용되는 알고리즘으로는 다익스트라 알고리즘이 대표적이라 할 수 있다. 다익스트라 알고리즘이 내부적으로 어떤 처리과정을 거쳐 결과를 만들어내는지에 대해 살펴보도록 한다. 다익스트라를 이용한 최단거리 찾기 그래프 이론에서 그래프는 링크(edge)와 노드(vertex)로 구성된다. 링크에 가중치(weight)가 적용되는 그래프를 가중치 그래프(weighted graph)라고 하며 이 가중치 그래프 상에서 출발지 노드가 주어졌을 때 다익스트라 알고리즘은 이 출발지 노드와 연결 가능한 모든 목적지 노드들 사이의 최단거리 경로와 거리(가중치의 합)를 구해낸다….

Read More Read More

랩걸(Lab Girl)

랩걸(Lab Girl)

유시민 작가의 책 “문과남자의 과학공부”를 읽으면서 읽어봐야 겠다고 생각한 “랩걸”이라는 책을 꺼내 들었다. 처음에는 영서로 시작했지만 내용이 생각 이상으로 난해한 탓에 중단하고 다시 번역서로 시작했다. 이 책에 관심을 가지게 된 이유는 나무의 이야기가 담겨있기 때문이다. 과학자의 눈으로 보는 나무 이야기는 어떨까라는 궁금증이 이 책을 읽게 만든 가장 중요한 이유이기도 하다. 이 책을 읽으면서 받는 느낌보다 과학적 사실, 발견들을 기록하는 것이 나중에 숲/나무를 공부하는데 도움이 될것 같아 관련 내용들을 하나씩 정리하려고 한다. 유칼리투스와 같이 휘발성 유기화합물을 내뿜는 나무들이 있다. 가족여행으로 호주…

Read More Read More

보리수라 불리는 나무에 대하여

보리수라 불리는 나무에 대하여

전문가가 작성한 정보도 오류가 있을 수 있습니다. 더구나 전문가가 아닌 이들에 의해 재생산된 정보의 정확성은 항상 검증해 보아야 안심할 수 있는 수준입니다. 특히 식물 쪽은 더욱 그러합니다. 보리수라 불리는 나무를 예로 들어 보겠습니다. 인터넷에 보리수에 대한 자료는 넘쳐 납니다. 하지만 워낙 복잡한 이야깃거리가 얽혀 있다 보니 잘못 게재된 정보가 많아 혼란은 계속되고 있습니다. 이번 기회에 정확하게 알려드릴까 합니다. 우리나라에서 통용되는 보리수라는 이름의 나무는 네 다섯 가지로 추릴 수 있습니다.(1) 부처님이 깨달음을 얻은 장소의 보리수(2) 슈베르트 가곡에 나오는 보리수(3) 우리나라에서 자라며…

Read More Read More

보리수면 어떻고 보리똥이렴 어떠랴

보리수면 어떻고 보리똥이렴 어떠랴

보리똥· 보리자· 보리수 짙푸른 바탕빛의 잎새 위에 붉게 익은 열매가 주는 대비감이 더욱 도드라진다. 그야말로 푸른 비단 위에 붉은 꽃을 더한 모습이다. 약간 시큼하면서도 텁텁함은 개량하지 않는 원초적인 맛을 입안에서 터트렸다. 하지만 몇 개를 계속 먹다보면 또 그 맛에 길들여져 계속 손이 간다.  유실수가 아니라 관상수임을 알기에 적당할 때 멈추지 않으면 애지중지하며 정원을 관리하는 이의 눈총까지 감수해야만 한다. 《조선왕조실록》에는 “보리수(甫里樹)열매가 익은 후에 잘 밀봉해서 올려 보내라.”는 기록이 남아있다. 미루어 보건데 과일이라기보다는 약재의 용도로 사용한 것 같다. 관상수도 유실수도 아니고 실상은 약나무였다….

Read More Read More

ZooKeeper 긁적이기

ZooKeeper 긁적이기

ZooKeeper는 MSA에서 Scalable한 구조를 유지가히 위해 많은 오픈소스 솔루션이 내부적으로 활용하는 Coordination 서비스라 할 수 있다. 대표적으로 Kafka에서 내부적으로 환경을 관리하고 클러스터를 유지하기 위해 사용하는 정도로 알고 있다. ZooKeeper의 탄생을 보면 야후(Yahoo)가 아직은 그 명성이 살아 있을 때 클라우드 환경으로 전환과 맞물려 자체으로 필요에 의해 만든 후 오픈소스로 공개한 서비스이다(2011). 클라우드/MSA환경에서는 안정적인 서비스 운영을 위해 Scalable한 구조가 필수적이다. 이때 서비스의 트래픽 상황에 따라 노드 개수가 늘어나거나 줄어들어야 하며 바이너리 업데이트 배포시에도 모든 노드들에 동일한 환경이 구성되도록 해야 한다. 예를 들면…

Read More Read More

재사용성이 높은 자바 코드를 작성하려면

재사용성이 높은 자바 코드를 작성하려면

재사용성이 높고 보기에도 예쁜 코드를 작성해야 한다라는 얘기를 많이 듣긴 하지만 어떻게 하야 재사용성이 높고 예쁜 코드를 작성하는 것인지 막연할 것이다. 추상적이긴 하지만 아마도 읽기 쉽고 이해하기 편하며 유지보수가 용이한 코드를 말하는 것일 것이다. 이 글에서 재사용성이 높은 코드를 작성함에 있어 개발자들이 쉽게 시작할 수 있는 8가지 방법에 대해 얘기해 보고자 한다. 재사용성이 높은 코드를 작성한다는 것은 개발자들에게 매우 중요하게 요구되는 기술중의 하나라서 많은 엔지니어들이 반드시 알아야 하는 덕목이라 할 수 있다. 근래 마이크로서비스아키텍처(MSA)가 보편화 된 개념으로 자리잡고 널리 적용하고…

Read More Read More

문과 남자의 과학공부

문과 남자의 과학공부

내가 좋아하는 유시만 작가와 KAIST 물리학과 김상욱 교수, 뇌과학자 박문호 박사와 이 책을 소재로해서 얘기 나누는 유투브를 보게 되면서 관심을 가지고 있던 차에 다음 읽을 거리를 찾다가 웬지 마음이 끌려 이 책을 펴게 되었다. 유시민 작가의 특유의 명료한 논리는 그리 돋보이지 않으나 예상대로 문과를 나온 사람도 물리, 화학, 수학 등의 내용을 쇱게 이해할 수 있도록 서술하고 있다. 읽으면서도 놀라운 점은 양자, 뇌과학, 수학 등 어렵게 느끼는 내용들을 이렇게 쉽게 풀어 놓으려면 관련된 지식을 얼마나 많이 조사하고 섭렵해야 가능할까하는 것이었다. 이…

Read More Read More

이처럼 사소한 것들

이처럼 사소한 것들

지금까지 자기계발 또는 인문학 책들 위주로 독서를 했는데 오랫만에 가볍게 소설책을 읽어보고 싶어 “이처럼 사소한 것들”이란 책을 선택했다. 전체 페이지가 130여쪽이어서 몇 시간이면 쉽게 읽을 수 있는 단편소설이었다. 처음 시작은 평이하게 시작하고 내용이 전개되면면 흥미 진진한 내용으로 꾸며질 것 같았는데 그저 크리스마스에 가족영화 한편 보는 정도랄까 추리소설을 좋아하는 내게 끌리는 그런 내용은 아니었다. 다 읽고 난 느낌은 사람과의 관계, 사람에 대한 고마움, 애정, 어렵더라도 사랑을 배풀고 살아라 정도이지 않을까 한다. 특히, 크리스마스를 시간적 배경으로 한 내용이라 이 즈음에 읽으면 좋을…

Read More Read More

Stolen Focus (도둑맞은 집중력)

Stolen Focus (도둑맞은 집중력)

시간이 좀 나서 책을 좀 읽어 볼까 하고 인터넷 서점을 둘러 보던 차에 “도둑맞은 집중력” 이란 베스트셀러 책이 눈에 들어 온다. 서평을 보니 요즘 시대에 누구나 겪을 것으로 여겨지는 집중력 문제를 다루고 있다. 몇 년 전 나도 하나에 집중하지 못할 뿐만 아니라 기억력이 급격히 떨어지는 현상을 겪은 터이라 내용이 더 잘 와닿고 공감할 부분이 많을 것 같아 읽어 보기로 한다 squalid ravine 하버드 교수 B. F. Skinner는 돼지, 쥐, 또는 비둘기와 같이 동물의 자유의지를 통제할 수 있다고 주장을 최초로 주장했다….

Read More Read More

Recursion and Tail-Call Optimization

Recursion and Tail-Call Optimization

프로그래밍에서 Recursive Call을 설명할 때 당골로 언급되는 것이 factorial 예제를 통해 값을 구하는 것일 것이다. 그냥 겉으로 보기에는 코드의 길이가 짧고 깔금해 보이지만 내부적으로 보면 Stack을 과도하게 사용할 수 있고 이로 인해 Stack Overflow가 발생할 가능성이 있어 되도록이면 Recursion보다 Loop을 사용하도록 가이드 하고 있다. Tail Call이란 Java는 단지 언어(language)를 넘어 하나의 플랫폼 역할을 한다. 즉, JVM은 단지 Java 언어 뿐만 아니라 Groovy, Scala같이 다른 언어들도 지원한다는 것을 알고나면 플랫폼이란 말이 이해가 될 것이다. 많은 functional language interpreter들은 recursion 동작을 optimize함으로써…

Read More Read More