Browsed by
[Author:] skanto

이처럼 사소한 것들

이처럼 사소한 것들

지금까지 자기계발 또는 인문학 책들 위주로 독서를 했는데 오랫만에 가볍게 소설책을 읽어보고 싶어 “이처럼 사소한 것들”이란 책을 선택했다. 전체 페이지가 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

Sequential or Temporal Coupling

Sequential or Temporal Coupling

Functional Programming에 관심이 많은 개발자들은 위 제목이 무엇을 뜻하는지 잘 알것이다. 내용을 다시 확인해 보자면 Functional Programming은 할당문(assignment statements) 사용하지 않고 프로그래밍 하는 것이라 할 수 있다. 따라서 Functional Programming은 변수를 사용하지 않고 프로그래밍하는 것이며 functional Programming에서 값(values)는 변하지 않는다라고 할 수 있다. 왜 이것이 바람직한지 아래의 코드를 한번 보자 시스템의 상태는 Block A를 실행할 때와 Block B를 실행할 때가 서로 다를 것이다. 이 말은 Block A가 반드시 Block B에 앞서 실행되어야 한다는 것을 의미한다. 만약 이 두 Block의 순서를…

Read More Read More

Up and Running for Protobuf

Up and Running for Protobuf

다른 시스템과 데이터를 주고 받는다거나 용량이 큰 데이터를 효율적으로 저장하기 위해서는 데이터를 압축하거나 다른 효율적인 방법이 필요하다. 인터넷을 통해 데이터를 효율적으로 주고 받기 위해 많은 사람들이 고민을 해 왔고 그 중 요즘 Defacto Standard로 사용되는 것이 Google에서 만든 Protocol Buffer(a.k.a Protobuf)라는 것이다. Protocol Buffer는 language 중립적이고 데이터를 Serialize할 때 쉽게 확장 가능한 구조를 제공한다는 특징을 가지고 있다. Protocol Buffer를 사용하기 위해서는 몇가지 설치가 필요하다. 먼저 Protocol Compiler(확장자 .proto 파일을 컴파일하기 위해 사용됨)와 사용하고자 하는 language에 맞는 Protobuf Runtime을 먼저 설치해야…

Read More Read More

향후 50년은 초지능을 가진 두뇌를 만드는 시대

향후 50년은 초지능을 가진 두뇌를 만드는 시대

몇 년전 부터 AI가 IT업계의 메인스트림으로 인식하고 있다. 이제 AI가 가져다 줄 변화에 두려움이 느껴지기도 한다. AI가 어떻게 동작하는지 기술적인 관점에서 바라보는 것도 재미 있지만 좀 더 큰 그림, 한 1km 높이에서 AI기술을 이루는 큰 블럭들을 바라볼 수 있다면 요소 기술을 접하는데 더 도움이 될 것이다. AI가 보편화 될 수록 관련 기술 생태계는 아래의 그림과 같이 구성될 것이다. 지금까지의 IT 또는 SW의 발전은 더 나은 계산기를 만드는 과정이었다고 보면 된다. 즉 더 나은 CPU와 이를 활용하는 더 나은 SW로 다양한…

Read More Read More

ChatGPT가 하는 것이 무엇이고… 왜 동작하는 걸까?

ChatGPT가 하는 것이 무엇이고… 왜 동작하는 걸까?

2022년11월 ChatGPT를 처음 접하던 날 내가 받은 인상을 아직도 생생하게 기억한다. 프롬프트 뒤에는 사람이 직접 입력을 하고 있다는 우스게 소리도 있었다. 내가 질문한 답을 기-승-전-결에 맞추어 군더더기 없이 깔끔하게 설명을 해주다니… 그것도 오류없이. 이게 가능하단 말인가! 더구나 프로그래밍 관련 질문에 Boilerplate Code를 곁들인 답을 뱉어 내는 것을 보며서 이제 정말 개발자의 종말을 보게 될 것인가란 약간의 두려움도 있었지만 ChatGPT가 내부에서 어떤 과정을 거치기에 이런 놀라운 결과를 만들어내는지 궁금해 지지 않을 수가 없었다. GPT 이전의 AI는 주로 수학적인 설명을 토대로 미래를…

Read More Read More

React의 Template(JSX)은 어떻게 동작할까?

React의 Template(JSX)은 어떻게 동작할까?

인터넷에 글을 보다가 평소에 음.. 그렇게 동작하는 군.. 하지만 내부에서는 어떻게 동작을 하는걸까 하고 생각하던 내용을 마주하게 됐다. 나의 궁금증을 99% 해결해 주는 내용이라 이해한 내용을 잠시 옮겨볼까 한다. 웹 어플리케이션을 개발하는 개발자들 사이에 React, Vue 등을 언급하는 것을 많이 볼 수 있다. 개인적으로 이런 프레임워크를 그리 선호하지는 않는다. 왜냐하면 히트곡이나 패션 아이템처럼 잠시 왔다 스쳐 지나가는 유행처럼 보이기 때문이다. 하지만 이들 근간에는 어떤 기술이 활용되고 있는지 파악해 놓을 필요는 있다. 그래야 유사한 형태의 프레임워크가 나오더라도 쉽게 이해할 수 있고…

Read More Read More

Transformer

Transformer

참고: The illustrated Transformer GPT는 Generative Pre-trained Transformer의 약자라고 알고 있다. 여기서 가장 중요한 역할을 하는 것이 Transformer일 것이다. 그렇다면 Transformer가 어떤 기능을 하기에 가장 중요한지 궁금증을 가지지 않을 수 없다. 논문의 포함해서 여러 자료를 살펴봐도 글자만 보이지 문맥이 보이지 않았는데 이 문서를 보고서 무릅을 탁 치게 되었다. 우선 쉬운 설명을 통해 궁금증을 해결하도록 해 준 Jay Alammar에게 감사를 드리고 나의 언어로 다시 정리해 보고자 한다. 나중에 자세하게 설명하겠지만 Transformer는 내부적으로 Attention이라는 개념을 사용한다. 이를 사용함으로써 그동안 문제로 지적됐던 느린…

Read More Read More

마로니에로 더 알려진 나무, 칠엽수

마로니에로 더 알려진 나무, 칠엽수

칠엽수[학명: Aesculus turbinata Blume]는 칠엽수과의 겨울철에 잎이 떨어지는 넓은 잎 큰키나무이다. 긴 잎자루 끝에는 손바닥을 펼쳐 놓은 것처럼 일곱 개의 잎이 달리므로 ‘칠엽수(七葉樹)’란 이름이 생겼다. 열매의 영어 이름은 ‘horse chestnut’, 곧 ‘말밤’이란 뜻이다. 원산지인 페르시아에서 말이 숨이 차서 헐떡일 때 치료약으로 쓰였기 때문에 생긴 이름이라는 이야기와 가지에 잎이 붙었던 자리[葉痕]가 말발굽 모양이라서 붙인 이름이라는 이야기가 있다. 컨커 트리(Conker Tree)라고도 부른다. 칠엽수의 또 다른 이름인 ‘마로니에(marronnier)’는 프랑스가 연상된다. 파리 북부의 몽마르트르 언덕과 센 강의 북쪽 강가를 따라 북서쪽으로 뻗어 있는, ‘낙원의…

Read More Read More