분류 전체보기

[서평] 놀라움의 힘
"세상에는 두 종류의 연구가 있다. 하나는 우리가 가진 상식을 확인시켜주는 연구고, 다른 하나는 틀린 연구다." - 작자미상 우리 인간은 모두 편향을가지고 살아간다. 그리고 그 편향은 좀처럼 쉽게 변하지 않는다. 기존 생각의 반대되는 견해를 접하게되면 편향이 줄어들 것이라 생각할 수 있지만 그렇지 않다. 오히려 새로운 정보는 기존 견해를 역으로 강화한다. 한 연구에서는 강한 정치적 신념을 지닌 실험 참가자에게 반론을 제시하거나 그의 정치적 신념이 틀릴수 있다는 증거를 제시했을때, 신체적 위협에 대응할때와 동일한 뇌 영역이 활성화 된다는 사실을 발겼했다. 자신의 믿음에 반대되는 상황을 마주했을때 사람은 자동으로 투쟁-도피 반응을보이며, 기존의 견해를 지켜내는 것이다. 이런 편향이 특히 부정적으로 작용하는 ..

[서평] 의학의 대가들
이책은 모두 실화로 구성되어있으나 소설보다 흥미롭다. 책에서는 우리가 지금 당연히 누리고 있는 의학기술들이 어떻게 탄생할수 있는지에 대한 이야기를 들려준다. 발전은 발작처럼 일어나고, 때로는 후퇴하기도 한다. 의학의 역사를 들여다보노라면 핵폭탄이나 세계대전보다 인류에 더 큰 영향을 미친 중대한 발견이 숨막히는 위험이나 평범한 관찰 또는 우연한 오류라는 찰나의 순간에 달려있었음을 알 수 있다. 이 책은 그 순간에 관한 이야기다. - 서문, p.11 책을 읽다보면 의학적 발전이 결코 점진적으로 이루어진 성과가 아님을 알 수 있다. 의학적 발전은 갑자기 어느 순간 갑자기 발작처럼 찾아온다. 한번의 우연한 발견, 한번의 실수가 엄청난 혁신의 씨앗을 심기도 한다. 저자는 심장병, 당뇨, 세균성 감염, 바이러스성 ..

[서평] 인간관계론
'사람에 대한 관심' 이 책을 읽으면서 내가 삶에서 가장 크게 놓쳐왔던 부분이 '사람에 대한 관심' 이었음을 깨달았다. 나는 그동안 '나'의 능력과 '나'의 안녕, 그리고 '나'의 관심사에만 초점을 두고 살아왔다. 개인의 성장이 삶을 풍성하게 해주는 모든것이라 생각했기 때문이다. 인간관계론을 읽으며 이가 틀렸음을 머지않아 알게 되었다. '개인'으로 성장하고 행복해지는것은 명확한 한계가 존재한다. 진사회적 동물인 인간은 사람간의 관계속에서 더 성장하고, 더 큰 성과를 이루고, 그리고 더 행복하다. 책에서는 더 나은 관계를 만들어 가는방법과 더 좋은 평판을 얻는 비결, 그리고 다른 사람을 쉽게 설득하는 지름길을 다양한 예시로 소개한다. 한장씩 읽어나가면서 내가 얼마나 책의 조언의 반대로 살아왔는지 알게되어 ..
[sql] recursive CTE
놀랍게도 sql에서는 변수를 지정할수도 있고 재귀적인 쿼리를 작성할 수 있다. 쿼리내에서 지정한 변수를 참조해서 어떤 조건에 도달할때까지 반복적인 loop를 형성하는 것이 가능하다. 이를 이용하면 쿼리로 time table을 생성하는것이 용이한데, 예시로 한번 이해 해보자. hour 0 1 2 .. 22 23 위와 같은 table을 하나 만든다고 가정하자. hour라는 하나의 칼럼을 가진 테이블이며, row에는 0부터 23시까지의 시간을 표현하길 원한다. 단순히 생각하면 아래처럼 0부터 23까지의 값을 union all한 서브쿼리를 만들어볼수도있다. with cte as ( select 0 union all select 1 union all .. select 23 ) 그러나 이는 노동집약적이며 다소 귀찮..

[airflow] CustomHook 1
https://indistract.tistory.com/68 [airflow] CustomOperator airflow에서는 기본적으로 제공해주는 오퍼레이터들이 많다. HTTP 요청을 보내는 SimpleHttpOperator, S3에서 데이터를 읽어와 MySQL 데이터베이스에 쓰는 데 사용되는 S3ToMySqlTransfer, 그리고 AWS S3에서 파일 indistract.tistory.com 위 게시글에서 CustomOperator를 사용해서 각 상황에 맞는 기능을 확장해 새로운 operator를 생성하는법을 배웠다. 커스텀한 operator를 만드는것은 중요하지만 나는 게시글의 마지막에 이런말을 남겼다. 다만, 기존의 오퍼레이터 기능이 충분하다면 굳이 커스텀 오퍼레이터를 만드는것은 비효율이다. 때문..
[airflow] CustomOperator
airflow에서는 기본적으로 제공해주는 오퍼레이터들이 많다. HTTP 요청을 보내는 SimpleHttpOperator, S3에서 데이터를 읽어와 MySQL 데이터베이스에 쓰는 데 사용되는 S3ToMySqlTransfer, 그리고 AWS S3에서 파일을 가져와서 사용자 지정 함수를 적용한 후 다시 S3에 저장하는 S3FileTransformOperator 등이 있다. 이런 기본적으로 제공해주는 오퍼레이터도 충분히 훌륭하지만, 상황에 따라서 원하는 기능을 충분히 구현하지 못할수도 있다. 예를들어, 여러 url에 HTTP 요청을 보내고싶다면 SimpleHttpOperator 로는 목적을 충분히 달성하지 못한다. 해당 operator는 하나의 url에 대한 리턴값만 출력하기 때문이다. 이때 사용되는것이 Cus..

[서평] 퓨처셀프
대부분의 사람들은 자신의 현재를 기준으로 미래를 바라본다. '지금' 가진것이 무엇이고, '지금' 조건이 무엇인지를 파악한 뒤에 그릴수 있는 괜찮은 미래를 그려본다. 이는 합리적으로 보인다. 그러나 저자 벤저민 하디는 현재를 기준삼아 미래를 바라보지 말라고한다. 그는 반대로, 원하는 것에서 시작해 거꾸로 가라고한다. 목표를 향해 가기보다 목표라는 지점에서 생각하고 행동하라고한다. 이는 행동의 기준을 '현재'에 두는것이아니라 '미래'에 두라는 의미이다. 현재의 조건에서 벗어나서 불가능해 보이는 미래를 생각하라는 말이다. 저자는 10년전의 자신을 생각해보라고한다. 나의 10년전(19살)을 생각해보면, 나는 밴드 음악이 하고 싶었다. 나는 음악을 무척이나 좋아했고 특히 밴드가 좋았다. 그래서 진로를 음악 쪽으로..

[python] OOP
코드를 작성하다보면 자신의 코드가 어떻게 구성되어가는지 파악하기 어려울 때가 있다. 코드를 작성하다보면 그 길이가 점점 길어지고 의존관계가 복잡하게 얽히게 되는 경우가 존재하기 때문이다. 이런 상황이 누적된다면 코드 관리가 심히 어렵다. 복잡한 프로젝트를 코딩할때도 단순한 관계를 위지하기 위해서 우리는 OOP (Object Oriented Promramming) , 즉 객체지향 프로그래밍이 필요하다. 나무위키에서는 OOP를 아래처럼 설명한다. 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 '메소드와 변수'를 가지며, 특정 역할을 수행하도록 인간이 정의한, 추상적인 개념이다. 이해..