본문 바로가기

전체 글

[독후감]장사의 신 서평 리뷰 - 어느 사업에나 적용할수 있는 기본기 지금 장사나 사업을 하고 있다면, 도대체 왜, 장사가 되지 않는 것인가. 고민해본적이 있을 것이다. 남의 사업에는 쉽게 보이지만, 초심을 까먹은 사업자에게 가장 중요한 기본기에 대해서 우노 다카시는 아주 쉬운 어체로 당연하게 설명을 해주고 있다. 우리는 장사나 사업을 하면서 정말 "기본"을 지키고 있는가? PART1 : 장사 안 되는 가게는 있을 수 없다. 1장에서부터 정말 좋은 내용들을 많이 담고 있다. 우노다카시의 기본적인 장사의 개념은 "손님을 얼마나 즐겁게 해주느냐" 이다. 즉, 오직 음식(상품)으로 고객을 즐겁게 해주는게 전부가 아니라는 것이다. 서비스를 매우 강조하고있다. 좋은 재료와 합리적인 가격은 기본, 작은 부분들까지 배려가 녹아있는 가게. 이것이 장사의 신의 가게 철학이다. 이것을 기본.. 더보기
VsCode(visual studio code) 유용한 단축키 정리 어떤 IDE를 사용하는지도 중요하지만, IDE를 선택했을때 어떻게 장점을 살려 유용하게 사용하는 것이 더 중요합니다. 기중 가장 기본이 '단축키'를 익혀 마우스 사용량을 줄이는것 이라고 생각합니다. 1. 정말정말 모르면 안되는 단축키 Ctrl+P - 빠른 파일열기 파일들을 쉽게 이동할수 있습니다. 이 단축키를 쓰지 않으면 계속해서 마우스로 파일을 이동하게 되겠죠? Ctrl+Shift+P - 명령어 보기 원하는 명령어, 실행시키고 싶은 동작이 있다면 이 단축키를 이용하면 됩니다. 실제로 이 단축키만 알아도 밑에 열거한 단축키보다, 검색해서 사용하다가 단축키를 외어버리면 됩니다. 막막하게 구글에 vscode 유용한 단축키를 검색하기 보다는 직접 자주 사용하는 단축키만 외우면 어느덧 단축키만 사용하고 있는 자.. 더보기
02. 딥러닝을 위한 선형대수학(Linear Algebra)_part1 02. 딥러닝을 위한 선형대수학(Linear algebra)_part1 Ian Goodfellow, Yoshua Bengio, Aaron CourvilleMIT Press, 2016. 11. 18. - 800페이지※ 이 글은 http://www.deeplearningbook.org/ 을 보고 개인적인 관점을 토대로 요약, 정리, 추가한 자료입니다. 틀리거나 잘못된 점이 있다면 댓글로 남겨주시면 감사하겠습니다. 이번 글에서는 2장 내용인 선형대수학의 절반정도 까지 알아보도록 하겠습니다.딥러닝의 대부분의 연산이 행렬로 계산되어지기 때문에 선형대수학은 딥러닝에서 빼놓을수 없는 영역입니다.개인적인 생각으로는 용어랑 표기만 완벽하게 알아도 뒷 부분에 설명을 이해하기에 많은 도움이 될 것 같습니다. 2개의 파트로 .. 더보기
01. 딥러닝이란?(Introduction) 01. 딥러닝이란?(Introduction) Ian Goodfellow, Yoshua Bengio, Aaron CourvilleMIT Press, 2016. 11. 18. - 800페이지※ 이 글은 http://www.deeplearningbook.org/ 을 보고 개인적인 관점을 토대로 요약, 정리, 추가한 자료입니다. 틀리거나 잘못된 점이 있다면 댓글로 남겨주시면 감사하겠습니다. 이번 글에서는 1장 내용 중, AI의 Knowledge based approach에서 부터 현재 Deep learning까지 어떠한 이유에서 발전되어 왔는지를 알아보겠습니다. 기타 책의 내용인 역사적인 부분은 책의 본문을 참고하시기 바랍니다. 01.1 - Knowledge base approach인공지능(이하 AI)는 고대 .. 더보기
간단한 CNN(Convolutional neural network) 만들어보기 텐서플로우로 간단한 CNN(Convolutional neural network) 만들어보기 이번 글에서는 MNIST 데이터 셋을 이용해서 텐서플로우에서 CNN을 구성해봅니다.즉, MNIST 데이터셋을 읽어와서 필기체숫자가 0~9 중 무엇인지를 구별해 낼 것입니다.CNN의 이론보다 '구현' 에 초점을 두고 작성하였습니다.CNN에 대해서 전혀 모르시는 분들은 이론을 보고 오시면 좋겠습니다. 1. tensorflow import + MNIST 데이터셋 읽어오기 123import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('MNIST_data', one_hot=T.. 더보기
제23회 SQLD 자격검정시험 후기 제23회 SQLD 자격검정시험....! 학교에서 (반강제)로 보게 되어서 갔다왔다. 12월 3일(토요일)에 동국대에 가서 봤는데...... 제발 붙기를................................................. 간단하게 후기를 쓰자면. 전체적으로 널널한 시험시간은 아니다.1시간 30분인데 개인적으로는 1시간만에 풀고 30분동안 천천히 다시 풀면서 마킹을 했는데조기퇴실 하시는 분들은 없었다. 1단원생각보다 너무어렵게 나왔다............과락만 아니길 기도하면서.......사실 공식수험서를 나름(?) 정독을 몇번하고 갔는데 문제를 읽으면서 뭔....소리지? 하는게 많았던것 같다.실제 공부할 때는 그냥 마음편히 읽지말고 이해하면서 정독해야할듯하다 대충 기억에 남는거는 식별자.. 더보기
그래프(Graph)의 정의와 표현 그래프(Graph)의 정의와 표현 알고리즘에 대해 공부할 때 가장 장벽이 높다고 생각하는 부분이 바로 그래프이다.이번 글에서는 기나긴 그래프 알고리즘에 들어가기에 앞서,간단하게 그래프가 무엇인지, 어디에 사용하는지, 어떻게 사용하는지에 대해 알아보도록 하자. 그래프(Graph)란?그래프는 실제 세계의 현상이나 사물을 정점(Vertex)와 간선(Edge)으로 표현을 하기 위해 사용한다.실제 예를 들어보도록 하자. 위의 그림은 일상 생활에서 돈관계를 그래프 구조로 표현을 한 것이다. 민희는 철수에게 5000원을 갚아야 하고,철수는 영희에게 6000원,영희는 민수에게 100원,민수는 영희에게 500원 을 갚아야 하는 관계이다.이렇게 실제 세계의 현상, 즉 여기에서는 사물들 간의 관계를 그래프로 표현 할 수 있.. 더보기
max-heap, min-heap - 이진트리의 활용 heap - 이진트리의 활용 실제로 상당히 유용하게 쓰이는 heap에 대해서 알아보도록 하자. heap이란 이진트리를 활용한 상당히 재밌는 구조이다. 주로 max-heap, min-heap으로 가장 큰값 또는 가장 작은 값을 빠르게 찾기 위해서 사용이된다.min, max 뿐만 아니라 원하는 조건대로 compare을 하면 가장 원하는 값을 빠른시간에 뽑아낼 수 있다. 아직 설명하기 전이지만 , sort를 한 후에 골라내는게 더 빠르지 않냐 라는 생각을 할 수 도있다.이 heap의 장점이라면, 삽입, 삭제를 했을 때 추가적인 sort가 필요없다는 것이다.이 정도로 서론을 끝내고 직접 적으로 heap에 대해서 알아보자. 1. heap?heap이란 최대값 또는 최소값을 빠르게 찾기위해서 고안된 트리모양의 자료구.. 더보기
이진트리(Binary Tree) - 트리(Tree)의 기초 이진트리(Binary tree) - 트리(Tree)의 기초 알고리즘과 자료구조를 공부를 하다 보면 후반부에서 스슬 어려워 지기 시작하는 부분이 바로 Tree이다. 트리의 종류도 이진트리, AVL트리, 레드블랙트리, 세그먼트 트리 등등 여러가지 트리의 종류가 있다. 이번 글에서는 트리의 기초 중 가장 간단하고 실제 많이 사용하는 이진트리에서 대해 알아보자. 본격적으로 이진트리에 대해서 살펴보기에 앞서, 간단하게 트리의 관련 용어부터 정리하고 시작하겠다. 0. 트리 용어 정리 그림에 중요한 용어들을 대충 정리를 해 보았다. 하나씩 설명을 하자면, 트리의 요소 하나 하나를 나타내는 동그라미를 노드(node)라고 한다. 트리는 이 노드들 끼리 부모와 자식의 관계를 형성을 하게 된다.그 중 부모노드의 부모노드의 .. 더보기
이진탐색(Binary Search)와 Parametric Search 이진탐색(Binary Search)와 Parametric Search 1. 이진탐색1.1 기본 아이디어우리가 원하는 값을 찾고 싶을 때에는 정말 간단하게 생각하면, 모든 값들을 하나씩 보면서 맞는지 아닌지 확인는 방법이 직관적인 방법이라고 할 수 있다. 하지만 이렇게 찾는 것은 가장 마지막에 원하는 값이 있을 경우, 모든 값 들을 한번 씩 살펴보아야 하기 때문에, O(N)으로 볼 수 있다. 그렇다면 좀더 효율적인 방법은 없을까? 에서 시작한 것이 바로 이진탐색(Binary search)이다. 이진탐색(Binary search)의 경우는 결과적으로 보면 O(logN) 만에 원하는 값을 찾을 수 있는데, 그 이유는 정렬이 되있다는 가정이 있기 때문이다. 아래의 그림을 보면서, 왜 그러한지 직관적으로 이해를 .. 더보기
퀵소트(quick sort) 알고리즘 퀵소트(quick sort) 알고리즘 정렬 알고리즘 중 평균적으로 O(NlogN)으로 알려져 있는 Quick sort에 대해 알아보자. 1. 기본 아이디어 기본적으로 O(N^2)으로 정렬하는 알고리즘(Ex : 버블정렬)은 바꾸는 기준이 순회를 하면서 바뀌어 지면서, 일반적으로 for문의 중첩으로 O(N^2)의 복잡도를 가지게 된다. 하지만 퀵소트 알고리즘은 직관적으로 보았을 때, 비교를 반씩 줄여나가면서 해보자! 라는 생각으로 접근을 하면 이해하기 좋을 것 같다. 즉 재귀를 이용한 분할정복 알고리즘이다. 기본적인 아이디어는 상당히 쉽다. 특정한 기준을 Pivot 이라고 부르고 이 pivot을 기준으로 pivot보다 작으면 왼쪽으로, pivot보다 크면 오른쪽으로 이동한다. 기본적인 아이디어를 바탕으로 제.. 더보기
파이썬 모듈과 패키지(Python3.X module and Package) 파이썬 모듈과 패키지(Python3.X module and Package) 모듈(module) : 코드들을 한 단위로 묶어 사용 할 수 있게 하는 하나의 단위말은 거창하지만.. 하나의 파일로 이해하는 것도 좋은것 같다. 모듈의 종류 3가지1. 표준모듈 - Python Package 안에 포함된 모듈2. 사용자 생성 모듈 - 내가 만든 모듈3. 서드파티 모듈 - 협력 업체나 개인이 만들어서 제공하는 모듈 모듈의 사용 예 import math print (math.sin(math.pi)) from math import sin, cos print (sin(1)) from math import * print (sin(1)+cos(1)+tan(1)+tanh(1)) # 모듈의 이름이 길 경우 별칭을 주어서 사용 i.. 더보기
git commit 사용해보기 git commit에 대해 알아보자. git의 commit 명령어를 알아보면 git bash에서는 commit : Record changes to the repository 로 정의가 되어있다.즉, 쉽게 생각해보면, 저장소에 변경내역을 기록하는것으로 생각해도 된다.너무 별게 없으니깐, 조그만 더 들어가서 보도록 하자. 우리가 실제 작업하고 있는 공간이 작업트리(WorkTree)라고 한다. 이 작업트리의 변경사항을 git에게 알려주기 위해서 별도의 공간인 인덱스(Index)라는 공간이 존재하게 된다.이 인덱스를 우리가 저장소에 Commit이라는 명령을 통해 기록해 주는 것이다. 실습 1. git add실습을 위해서 우선 우리가 작업하고 있는 작업트리, 즉 실제 사용하고 있는 곳에 newFile.py라는 파.. 더보기
네트워크플로우(Network flow) - 포드 풀커슨(Ford-Fulkerson) 알고리즘 네트워크 플로우란(Network flow)?그래프의 경로의 길이가 아닌, ‘용량’의 관점에서 바라보는 시점.Ex) 인터넷으로 영화를 다운받고 있는데 파일 원격지에서 얼마나 빨리 받을 수 있는지를 알고 싶다. 각 컴퓨터의 네트워크 장비는 대역폭의 제한이 있다. 따라서 가장 짧은 거리로 오는 것보다. 대역폭이 큰 쪽으로 오는 것이 더 유리하다. 위의 그림의 예에서 가중치는 비용이 아니라, 대역폭, 즉 유량이다.A->B->E 의 경로에서는 최대 1의 데이터를 보낼 수 있는 반면에, A->C->D->E의 경로는 한 정점을 더 지나가게 되지만 한번에 100의 데이터를 보낼 수 있다.용어 - Source – 네트워크의 시작(A), Sink – 네트워크의 도착지(E)- 정점 a에서 b로가는 용량 – c(a,b)- a.. 더보기
텐서플로우(TensorFlow), Anaconda 설치로 머신러닝 시작하기 텐서플로우로 머신러닝 시작하기.(CPU만, CUDA(X)) 4단계로 설치를 진행하면 된다. 1. Python3.x 설치2. Anaconda 설치3. TensorFlow 설치**설치가 되있는 부분은 건너 뛰어도 무방하다.**설치 과정은 https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#anaconda-installation 을 바탕으로 작성하였다.실제 작업환경은 Ubuntu 노트북이지만, 작성을 위해 VirtualBox에서 실행한 모습을 스크린샷으로 넣었다. 1. Python3.x 설치파이썬은 2.x버젼과 3.x 버젼이 존재하지만 3.x을 기준으로 설치한다.우선 파이썬이 깔려있는지를 확인하여야 한다. 기본적으로 Ubuntu환경이라면 설치.. 더보기
github에서 저장소 만들고 시작하기 Github에서 원격 저장소 만들어서 시작하기. 간단하게 2단계로 쉽게 git을 시작할 수 있다. 01. https://github.com/ 에서 새로운 repository 만들기.02. remote 연결 후 첫 push 해보기 01. New repository 만들기 github에 로그인을 하게 되면 오른쪽 아래에 New repository 버튼을 클릭을 해서 새 저장소를 만들어야 된다. 새 저장소를 클릭하게 되면 위의 사진처럼 간단한 초기 설정을 하는 화면이 나오게 되는데, 간단히 설명을 더하면 Repository name : 앞으로 사용하게 될 저장소의 이름을 지정한다.Description : 저장소의 간단한 설명Public/private : 저장소를 공개할지, 공개하지 않을지 설정한다.README.. 더보기