본문 바로가기

전체 글116

#2 기도하지 않는 당신에게 -『기도를 잃어버린 당신에게』 [이전 글] #1 기도해야 하는 이유 -『기도를 잃어버린 당신에게』 #1 기도해야 하는 이유 -『기도를 잃어버린 당신에게』 '기-승-전-말씀과 기도'라는 말이 있을 정도로 기도가 중요하다는 사실을 모두가 잘 알고 있다. 하지만 이 사실을 알고서도 기도하는 사람은 많지 않다. '기도할 시간이 없다, 기도를 어떻게 하는지 잘 모르겠다'.. alsoj.tistory.com 책의 첫 장에서는 왜 기도를 해야 하는지, 기도해야 하는 이유에 대해 정리해보았다. 두 번째 장은 '기도하지 않는' 사람들에게 전하는 저자의 경고가 담겨있다. 기도해야 하는 이유를 알고서도 자신이 얼마나 위험한 상태에 있는지 모르기 때문에 기도하지 않는다. 하나님과 대화하지 않는 것처럼 위태롭고 안타까운 관계는 없다. '기도하라'는 말이 잔.. 2020. 3. 28.
#1 기도해야 하는 이유 -『기도를 잃어버린 당신에게』 '기-승-전-말씀과 기도'라는 말이 있을 정도로 기도가 중요하다는 사실을 모두가 잘 알고 있다. 하지만 이 사실을 알고서도 기도하는 사람은 많지 않다. '기도할 시간이 없다, 기도를 어떻게 하는지 잘 모르겠다' 등 기도하지 않는 상황에 대해 다양한 핑계를 대지만, 결국에는 '기도해야 하는 이유'를 잘 모르기 때문이다. 기도해야 하는 이유를 진심으로 새기고 있다면, 기도하지 않을 수 없다. 『기도를 잃어버린 당신에게』에서 J.C. 라일은 기도해야 하는 이유를 7가지로 정리했다. 1. 구원을 위해서 기도가 절대적으로 필요하다. 그 누구도 기도하지 않는 사람은 구원받기를 기대할 수 없다. 죄 사함을 구하지 않고도 구원을 얻을 수 있다는 말은 성경 어디에도 없다. 성경을 읽을 줄 알아야만 구원받는 것은 아니다... 2020. 3. 24.
클린코드 #2 어디나 쓰이는 이름 의미있게 짓는 방법! 소프트웨어에서 이름은 어디나 쓰인다. 이렇듯 많이 사용하는 이름을 잘 지으면 여러모로 편하다. 이 장에서는 이름을 잘 짓는 간단한 규칙을 몇 가지 소개한다. 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 그러므로 이름을 주의 깊게 살펴 더 나은 이름이 떠오르면 개선하기 바란다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 그릇된 정보를 피하라 프로그래머는 코드에 그릇된 단서를 남겨서는 안 된다. 그릇된 단서는 코드 의미를 흐린다. 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다. 서로 흡사한 이름을 사용하지 않도록 주의한다. 유사한 개념은.. 2020. 3. 18.
룸서비스301, 양재천 예쁜 사진 찍을 수 있는 카페 평소 먹는 것에 큰 즐거움을 느끼지 못하는 편이다. 그래서 맛집이나 유명한 카페도 찾아다니지 않고, 매일 가던데만 갔었다. 여태까지 나에게 카페는 그저 커피를 마시거나 대화를 할 수 있는 공간이었다. 그런데 사진을 취미로 시작한 후 사진을 찍기에 좋은 카페들을 찾아다니는 즐거움을 알게 되었다. 이번 주에 다녀온 카페는 양재천 부근에 있는 룸서비스301(Room Service 301)이라는 카페다. 가기 전 인스타로 조금 찾아보고 갔었는데, 사진을 찍으면 예쁘게 나올 것 같아 기대가 되는 카페였다. 디저트 메뉴가 아주 다양한 편은 아니다. 종류가 매번 바뀌는 지는 모르겠지만, 대략 4~5가지 정도 되는 것 같다. 요즘 카페들을 다니다보면, 맛있게 만드는 것뿐만 아니라 보기에도 예쁘게 만드는 곳이 많다. 아.. 2020. 3. 12.
클린코드 #1 깨끗한 코드가 필요한 이유! 과거에 비해 코드를 작성하는데 들어가는 사람의 노력은 점점 적어지고 있다. 대부분의 툴이 표준화된 코드를 작성할 수 있도록 가이드해준다. 심지어는 이제 더 이상 사람이 코딩을 하지 않을 것이라고 바라보는 사람들도 있다. 이처럼 코드 자동화라는 말이 나오고 있는 시대에 코드를 다루는 것이 시대에 뒤떨어진다고 생각할 수 있다. 하지만 코드가 사라질 가망은 없다. 코드는 요구사항을 상세히 표현하는 수단이니까. 코드를 편리하게 작성하게 해주는 단계까지 왔지만 어느 수준에 이르면 코드의 도움없이 요구사항을 상세히 표현하기란 불가능하다. 추상화도 불가능하다. 정확히 명시하는 수밖에 없다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다. 결국 .. 2020. 3. 9.
『사랑의 기술』인간의 실존 문제에 대한 유일한, 건강하고도 만족스러운 해답 00. 사랑하는 법을 배울 수 있을까? 오래 전부터 계속 가져왔던 기도 제목 중 하나가 '다른 사람들을 사랑하는 마음을 가지는 것'이었다. 이런 기도 제목을 오랫동안 품어온 이유는 스스로가 그 누구보다 이기적이고, 다른 사람에 대해 관심을 가지지 않는다는 사실을 잘 알기 때문이었다. 신앙을 가진 사람으로서 위선적이고 부끄러운 모습이다. 항상 다른 사람을 사랑하는 마음을 가지고 싶었지만, 쉽지 않았다. 사랑은 수동적인 감정이 아니라 활동이다. 사랑은 '빠져드는 것'이 아니라 '참여하는 것'이다. 가장 일반적인 방법으로 사랑의 능동적인 특징을 나타낸다면, "사랑은 기본적으로 '받는 것'이 아니라 '주는 것'이다."라는 말로 표현할 수 있다. 그리고 『사랑의 기술』을 읽으면서 그저 내 마음에 '사랑'이라는 감.. 2020. 3. 8.
#5 행렬 인수분해(Matrix Factorization) [이전 글]#4 추천 시스템 - 협업 필터링(Collaborative Filtering) 기초 1. 행렬 인수 분해(Matrix Factorization) 행렬 인수 분해는 간단한 임베딩 모델이다. $m$은 User(or query)의 수이고, $n$은 Item의 수인 피드백 매트릭스 $A \in R^{m \times n}$가 주어질 때 모델은 row $i$는 User $i$ 임베딩인 User 임베딩 매트릭스 $U \in R^{m \times d}$와, row $j$는 Item $j$ 임베딩인 Item 임베딩 매트릭스 $V \in R^{n \times d}$를 학습한다. $UV^T$의 내적(Dot Product)이 피드백 매트릭스 A의 근삿값이 되도록 임베딩을 학습한다. $U.V^T$에서 $(i, j)$.. 2020. 3. 8.
클린코드 #0 장인 정신을 익히는 방법! 비전공자로 IT 기업에 취업한 지 어느덧 4년 차가 되었다. 시스템을 운영과 유지보수하면서 개발도 같이 진행했다. 시스템을 운영하면서 보통 다른 사람들이(프로젝트를 진행한) 짠 코드를 보게 되는데, 그 수준이 천차만별이다. 코드를 읽으면 바로 어떤 프로세스를 수행하는지 직관적으로 이해되는 코드가 있다. 반면 대체 왜 이렇게 작성을 했는지 의도를 알 수 없어서 함부로 손대기 두려워지는 코드들도 있다. 그러다 내가 개발한 코드를 한참 뒤에 다시 보면서 '이걸 왜 이렇게 짰을까?'라는 생각을 한 적이 있다. 항상 시간에 쫓기다보니 코드에 대한 고민을 하기보다는 기능이 동작하면 넘어갈 때도 많았다. 나 또한 안 좋은 코드를 양산해내고 있었다. 어떻게 코드를 짜는 게 좋은 것인지 확실히 익히고, 습관을 제대로 들.. 2020. 3. 6.
#4 추천시스템 - 협업 필터링(Collaborative Filtering) 기초 [이전 글] #3 추천시스템 - 컨텐츠 기반 필터링(Content-based Filtering) 1.협업 필터링(Collaborative Filtering) 컨텐츠 기반 필터링의 한계를 해결하기 위해 협업 필터링은 User와 Item간의 유사성을 동시에 사용하여 추천한다. 이를 통해 의외의 추천(serendipitous recommendations)도 가능하다. 즉, 협업 필터링 모델은 유사한 사용자 B의 관심사에 따라 사용자 A에게 Item을 추천할 수 있다. 또한 임베딩은 feature의 수작업(hand-engineering)에 의존하지 않고 자동으로 학습될 수 있다. 2.영화 추천 예시(Movie Recommendation) Training 데이터가 다음과 같은 피드백 매트릭스로 구성된 영화 추천 .. 2020. 3. 1.