목록분류 전체보기 (592)
KorSA
# INTRO 였나.. ‘나’라는 개념에 대한 생각을 크게 뒤흔들었던 적이 있었다. 이 애니메이션에서 설명한 ‘자아’란 하나의 단일 개체가 아닌 수 많은 개별 요소들의 합이었다. 초기 자아는 비어있는(공,空) 원이고 이 원 안에 개인적인 경험, DNA 특성, 주어진 환경 등이 하나씩 자리를 차지하면서 자아를 형성해간다. (물론 애니메이션은 사이보그에 관련된 거라 프로그래밍 같은 애매한(?) 것들도 들어가긴 했지만..) 이 개념을 접한 후 나는 스스로를 돌아볼 때 지금껏 겪어왔던 경험들과 천부적으로 인간에게 주어진 무언가의 합이라고 생각하게 되었다. 미래를 생각할 때에도 10년 후 나의 안에 무엇을 채우고 싶은지를 많이 물어보게 되었다. #0. 우리는 연결되어 있다 책 [우리는 연결되어 있다] 는 이러한 ..
이 글은 SELF-ORGANIZING MAPS TUTORIAL을 읽고 작성한 글입니다. 대량의 데이터들 속에서 이 데이터들이 어떤 특정한 경향이 있음을 알아보려면 어떻게 해야 할까? 군대에서 병사들이 헤쳐모이듯이 데이터들이 알아서 헤쳐모이도록 하려면 어떻게 해야 할까? 이 물음이 있다면 Self-organizing map(SOM) 기법을 사용해보는게 좋다. SOM은 unsupervised newural networks의 한 유형이고 사용자로 하여금 대량의 데이터셋에서 범주(Category)를 발견할 수 있도록 도와주는 기술이다. SOM은 grid의 형태로 뉴런을 표시한다. 격자무늬의 한칸 한칸이 뉴런인데 이 격자무늬가 반드시 사각형이진 않다. SOM은 반복작업(Iteration)을 통해 뉴런들이 어떠한 ..
이 글은 LAYMAN'S GUIDE TO A/B TESTING을 참고하여 작성되었습니다. 어떤 기술이나 방식이 기존보다 더 효율적이라는 사실을 어떻게 증명할 수 있을까? 비만을 줄이는 연구에 열중하고 있는 연구자가 있다면 다음해 투자를 받기 위해 자신의 연구가 가치가 있음을 입증해야 할 것이다. 이 경우 좋은 도구로서 A/B Testing이 있다. A/B Testing은 두 개의 집단군을 나누어 한 그룹은 실험하고자 하는 행위를 하고(실험 그룹, experimental) 다른 한 그룹(통제 그룹, control)은 아무것도 하지 않는다. 이후 이 두 그룹간의 차이를 보고 실험 그룹이 기존 그룹에 대비하여 어떻게 변화하였는지 측정한다. #0. A/B Testing의 전체 과정 A/B Testing의 전체 ..
미래는 정해져 있는가? 아니면 미래는 우리가 정하는 것인가? 책 [퓨처리스트]의 저자인 브라이언 데이비드 존슨은 미래는 우리 한명 한명이 만들어가는 것이라 말한다. 우리가 어떠한 생각과 판단으로 어떠한 행동을 하느냐에 따라 미래가 결정되기 때문에 미래는 본질적으로 예측 불가하다. 미래가 정해져 있지 않음은 우리에게 희망과 불안을 동시에 안겨다 준다. 아무리 어두운 상황에 있더라도 앞으로 더 밝은 미래를 살기로 선택할 수 있고 모든 것을 다 가진 행복에 취해 앞으로 다가올 위협에 소홀할 수도 있기 때문이다. 우리 모두는 살고 싶은 미래가 있다. 당장 떠오르지 않다면 적어도 피하고 싶은 미래는 있을 것이다. 내일 당장 대출금을 못 갚아 길거리에 나앉는 것을 원하는 사람은 그리 많지 않을 것이다. # 그렇다면..
MyBatis의 Mapper.xml 파일을 작성할 때 태그에서 keyProperty 속성으로 여러개의 key값을 지정하는 경우가 있다. 예를들어 ... 처럼 말이다. 이때 변수명을 잘 입력했음에도 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named... 오류가 뜨는 경우가 있다. 이 경우에는 ..
MyBatis를 이용한 프로젝트에서 객체 하나를 Maria DB에 insert하고 그 키값을 얻어오고 싶었다. 키값은 AUTO_INCREMENT 속성 대신 DB에서 직접 생성한 UUID 값을 사용하기로 하였는데, 태그에 추가로 태그를 넣어주어야 했다. 그래서 아래와 같이 작성했는데 SELECT UUID() as MY_OBJECT_ID FROM MY_CUSTOM_TABLE INSERT INTO MY_CUSTOM_TABLE ( MY_OBJECT_ID ) VALUES ( #{myObjectId} ); But... 어쩐 일인지 계속 "SelectKey returned no data" 에러만 계속 발생하였다. 테스트해보니 테이블에 데이터가 있을 경우 이 에러는 발생하지 않고 테이블이 비어있는 경우에만 이 에러가 ..
우리 회사는 gRPC로 통신 프로토콜을 정의하여 협업을 진행한다. gRPC 명세가 변경되면 새로 빌드된 SNAPSHOT이 소스 저장소인 NEXUS에 올라간다. 개발자가 각자의 프로젝트에서 개발을 할 때에는 NEXUS에 올라간 최신 SNAPSHOT 버전을 maven으로 import하여 사용한다. 오늘 아침 gRPC 명세가 변경되어 있었기 때문에 나의 프로젝트로 새로운 SNAPSHOT을 땡겨와야했다. 내가 쓰는 IntelliJ(2021.2.3 Community Edition)에서 기참조된 maven repository 내용을 업데이트하려면 아래와 같이 진행하면 된다. 1) pom.xml 우클릭 2) maven탭에 마우스 hover 3) 오른쪽에 메뉴가 하나 새로 뜨는데 여기서 Reload Project 클릭..
이 글은 CONVOLUTIONAL NEURAL NETWORKS(CNN) INTRODUCTION을 읽고 요약한 글입니다. 이전에 ANN(Artifical Neural Networks)에 관한 글을 읽었는데, CNN은 ANN의 한계를 극복하기 위해 만들어졌다. 그 한계가 무엇인고 하니 ANN은 모든 뉴런들이 서로 연결되어 있는 구조여서 학습할 데이터가 크면 클수록 복잡성이 급격하게 증가하는 것이었다. 복잡성이 증가하면 그만큼 학습(Training)에 소요되는 시간도 길어졌고 컴퓨터 성능을 최대한 끌어올려 학습하는 경우 이 학습 시간이 연구를 하기엔 너무 오래 걸리는 것이었다. 이에 대한 대안으로 나온 모델이 Convolutional Neural Netowrks, CNN이다. CNN은 모든 뉴런이 연결되어 있..
이 글은 Artificial Neural Networks (ANN) Introduction 을 읽고 요약한 글입니다. 개발자이지만 AI와는 거리가 먼 업무를 하면서도 CNN(Convolutional Neural Networks), DNN(Deep Neural Networks) 같은 단어는 들어봤었다. 하지만 ANN이라는 단어는 처음 들어봤는데 얘네들의 할아버지? 같은 느낌이었다. 현재는ANN의 단점을 보완한 CNN 혹은 DNN 등을 더 많이 사용되는 듯 하다. 그렇다면 ANN이란 무엇일까? ANN은 AI를 구현하고자 할 때 인간 뇌의 신경망을 본 따 만든 모델이다. 이 글에서는 손으로 쓰여진 숫자를 인식하는 예제를 들고 있다. 모델의 INPUT으로 손글씨 이미지가 들어가고, 모델의 OUTPUT으로 해당 ..
도커 관련 업무를 시작하면서 "도커라이징"이라는 용어를 알게 되었는데 한국어로 된 설명이 마땅히 없어서 잠시 끄적여본다.. 이 글에 따르면 도커라이징(Dockerizing)은 Docker 컨테이너를 사용하여 응용프로그램(application)을 패킹(packing), 배포(deploying), 실행(running) 하는 전 과정을 말한다. 한 마디로 우리가 작업하던 Docker 관련 일들이 모두 도커라이징 과정의 일부라고 보면 된다.