
# 웨일 유저 브라우저는 크롬만 고집해오다가 웨일로 갈아타서 클로즈 베타 때부터 사용해왔다. 처음에는 크롬 북마크 마이그레이션이 지원돼서 허들이 높지 않아서 좋았고 브라우저 화면을 분할하는 스페이스 기능과 사이드바로 모바일 웹을 사용하는 게 내게는 무척 큰 매력으로 다가왔다. 거기에 마우스 액션까지 가능한 부분이 좋았지만 스페이스와 사이드바 이 두 가지 기능을 제외하고는 크롬과의 큰 차별성은 느끼지 못했다. # 웨일 연구소 사실 웨일이 마음에 들었던건 웨일 연구소를 통해 브라우저 담당 개발자와 직접 소통할 수 있다는 점이 매력적이었는데 오픈하고 초창기에는 연구소를 통한 기능 제안이나 버그 제보, 사용자들 간의 커뮤니티를 통한 레벨 시스템도 흥미를 유발하는데 충분했다. 하지만 이제 꽤 시간이 흘렀고 사용자..

이번에는 GCP( Google Cloud Platporm )의 IaaS를 담당하는 Compute Engine의 인스턴스, 인스턴스 그룹, 인스턴스 템플릿, 이미지의 상관관계에 대해 알아보도록 하겠습니다. 이 과정이 끝나고 나면 GCLB( Google Cloud Load Balancer )까지 자연스럽게 연결이 될 겁니다. 하지만 LB에 대한 건 다음 글에서 살펴보도록 하고 이번 글은 인스턴스에 초점을 맞춰보겠습니다. # 미리 보기 아래 이미지를 떠올리면서 글을 읽으시면 도움이 됩니다. 결국 이미지로 인스턴스 템플릿을 만들고, 템플릿으로 그룹을 생성해서 Auto Scaling시에 사용한다는 건데 여기 인스턴스를 Source로 다시 이미지를 생성할 수 있다는 것이 골자입니다. 그럼 시작합니다. # 인스턴스 ..

한빛미디어에서 박해선 님의 믿고 보는 번역서가 출간되었습니다. 바로 파이썬을 활용한 머신러닝 쿡북인데요, 쿡북이라는 이름은 보통 입문서에는 붙이지 않는 것처럼 이 책은 머신러닝 입문 서적은 아닙니다. 행렬부터 다양한 데이터를 다루는 방법과 K-최근접 이웃, 로지스틱 회귀, 서포트 벡터 머신, 나이브 베이즈, 군집 그리고 신경망까지 두루 다루고 있습니다. 책의 예제들은 판다스와 사이킷런을 중심으로 다루고 있는데 관련 라이브러리 지식이 있으면 조금 더 편하게 읽을 수 있겠습니다. 알고리즘에 대한 전체적인 설명보다는 데이터 정제에 초점을 맞춰서 여러 가지 상황에 대해서 문제 해결 방법을 제시하고 있기 때문에 다양한 분야의 넓은 지식을 습득하는데 상당히 괜찮은 책이라고 생각됩니다. 다만 특정 분야에 딥 다이브 ..

aws cli를 사용하기 위해서 IAM( Identity and Access Management )에 사용자를 등록하고 액세스 키를 생성하는 과정에 대해서 알아보도록 합니다. 기본적으로 aws cli는 우리가 console.aws.amazone.com 로 브라우저에 접속해서 할 수 있는 대부분의 액션을 터미널에서 사용할 수 있게 해주는 일종의 sdk라고 생각해도 좋을 듯합니다. 우선 AWS에 접속해서 아래와 같이 IAM 페이지로 접근하도록 합시다. 좌측 메뉴중에 사용자를 선택하도록 합니다. 아래와 같이 사용자를 추가하거나 삭제할 수 있고 등록된 사용자가 있다면 리스트 형식으로 보여주는 UI가 제공됩니다. 여기서 사용자 추가를 선택하도록 합니다. 이제 사용자 정보를 입력하는 단계를 거치게 됩니다. 구분할 ..

GCP( Google Cloud Platform )에는 두 가지 타입의 인스턴스 그룹이 있습니다. 이번 글에서는 아래 두 가지 인스턴스 그룹에 대해서 이야기해보도록 하겠습니다. - New managed instances group ( MIG ) - New unmanaged instances group GCP 콘솔에서 인스턴스 그룹 메뉴의 위치는 Compute Engine에 VM instances 바로 밑에 있습니다. 여기서 Create instance group를 선택하면 아래와 같이 인스턴스 그룹을 생성하는 화면이 나옵니다. 인스턴스 그룹이 필요한 이유는 AWS와 마찬가지로 이종의 인스턴스 간 부하분산이 주된 이유가 될 텐데요. 일단 MIG( Managed Instances Group )에 대해서 살펴..
AMI( amazon machine image )를 CLI에서 아래와 같이 export 하려고 할 때 발생되는 에러입니다. 커맨드에 대한 공식문서는 여기에서 확인 할 수 있습니다. $ aws ec2 export-image --image-id ami-07512400xxxxx --disk-image-format VMDK \ --s3-export-location S3Bucket=my-export-bucket,S3Prefix=exports/ 에러내용 An error occurred (InvalidParameter) when calling the ExportImage operation: \ The service role vmimport provided does not exist or does not have su..

이전 편에서 데이터를 Google Cloud의 BigQuery에 담는 것 까지 진행을 했다. 사실 빅쿼리가 오버스펙이기는 하지만 쿼리 감각이 5년 전에서 멈춰있었기 때문에 이쯤에 개인 프로젝트로 쿼리 감을 되찾자는 것도 있었고, 빅쿼리를 통해 연동되는 GCP( Google Cloud Platform )의 여러 가지 부가적인 기능을 공부하자는 목적도 있었다. 아무튼, 지난시간까지 데이터를 적재하는 부분은 어느 정도 끝났기 때문에 데이터 모양새는 꽤 나쁘지 않게 쌓이고 있다. 현재는 대략 한 달치 이상의 데이터가 쌓이기를 기다리고 있는 시기인데 데이터가 충분히 쌓였을 때 다음 계획에 대해서 이것저것 생각해보고 있다. 사실 프로젝트의 목적은 "용인-> 강남 버스 출근 앉아가기"지만 이미 적은 데이터로도 앉을 ..

인터넷에 많고 많은 IntelliJ 단축키 글이 있지만 역시 하나씩 직접 사용하면서 정리해야 내것이 되는 듯 합니다. IntelliJ 를 사용하면서 익혀가고 있는 단축키를 아래와 같이 정리합니다. MacOS에서 Keymap은 Default for macOS를 기준으로 합니다. 아래에서 설명하는 기호는 다음과 같은 의미를 갖습니다. ⌘ : command ⌥ : option ⇧ : shift ⌃ : control 볼드체로 작성되어 있는 단축키는 인텔리제이로 개발하려고 할 때 제일 먼저 알아야 하는, 혹은 최소한으로 숙지하면 좋은 단축키 입니다. # Navigate # Edit - 계속 업데이트 진행 - 혹시 공유해주고 싶은 꿀 단축키는 답글 주시면 감사하겠습니다. :-)

최근에 if(kakao)dev2019 콘퍼런스를 다녀왔는데, 주로 컨테이너 쪽 세션을 들었다. 그래 어디 카카오는 컨테이너를 어떻게 사용하는지 한번 보자는 가벼운 마음으로 아래 세션들을 들었다. 결과적으로는 아주 탈탈 털리고 왔는데 이유인즉 요즘 이런 컨퍼런스에서 컨테이너를 이야기할 때 k8s를 빼놓고 이야기하지 않는다는 사실을 놓쳤다. 더욱이 딥 다이브 하기 힘들다는 k8s를 조금 더 쉽게 사용하자는 취지로 쏟아지는 오픈소스와 개념들을 모르는 채로 세션에 들어갔으니.. 도통 무슨 소리 하는지 알아듣지 못할 수밖에... 참 부끄럽게도 Helm쪽에서 charts를 이야기할 때 그래프를 떠올린 상태로 발표를 경청했다. 전체적인 그림이 머릿속에 이상하게 그려질 수밖에 없었는데 아래 Helm 공식 홈페이지를 한..

엔터프라이즈 자바에 마이크로서비스를 얹은 재미있는 책이 한빛미디어를 통해 번역되었다. 책은 자바를 기반으로 하는 마이크로서비스를 소개하고 있는데 자바 언어 자체를 모른다면 책을 읽는데 어려움이 있을 수 있다. 책을 소개할 때 대상 독자를 아래와 같이 정의한다. "이 책은 최소 4년 이상 엔터프라이즈 자바 개발 경험이 있는 개발자를 대상으로 한다. 그런 개발자 중에는 마이크로서비스에 대해 기본적인 지식을 갖췄거나, 엔터프라이즈 자바 기술이 아닌 기술을 기반으로 하는 환경(Node.js 등)에서 마이크로서비스를 시도해본 개발자도 있을 것이다. 하지만 엔터프라이즈 자바 마이크로서비스를 개발한 경험이 없는 개발자가 이 책의 대상이다." 책은 모노리스부터 마이크로서비스의 개략적인 소개로 시작된다. 결국 최종 목표..

이전 편에서 놓치고 있던 세 가지 부분에 대해서 이야기를 했었는데 데이터 중간점검을 하는 도중 이상한 점이 발견되었다. 특정 버스의 데이터가 제대로 수집되고 있지 않다던지, 아침 시간대에 대충 알고 있는 버스 빈 자리 숫자와 수집된 데이터에 확연한 오차가 발생하고 있었던 것이다. 다시 유심히 경기버스의 데이터를 살펴보니 수집되는 데이터에 index가 고정이 아니라는 사실을 알 수 있었다. 예를 들어 보면 수집되는 데이터를 나타내는 busArrivalInfo 배열에는 32개의 버스 데이터 정보가 있는데 이 배열 안에 내게 필요한 버스 정보들이 있는 위치가 가변이라는 것이다. 예를 들어 A라는 버스가 이른 아침에는 6번 index에 있었지만 어느 시간이 되면 7번 index로 바뀌어 있는 것이다. 데이터 안..

구글독스 기준으로 36장 정도 되는 분량의 후기를 적었는데 증발해버렸다... 글 중간에 사진 첨부하는 과정에서 넘어가지 않고 한없이 멈춰있길래 페이지 갱신했다가 글이 증발해버렸다. 그래도 임시 저장이 있으니 다행이지 하고 불러왔는데 이번에도 사진을 첨부하는 과정에서 멈춰버렸다. 그리고 나도 미춰버렸다. 이번에는 임시저장된 글도 함께 삭제되버렸으니까. 내 잘못이지. 티스토리를 믿다니... 역시 워드 문서처럼 중간중간 저장을 해줬어야 했는데.........

서비스에 도커를 도입하는 배경을 보면 MSA( Micro Service Architecture )로 부터 시작하기 때문에 사실 Container의 크기가 큰 것은 정상적인 경우가 아닙니다. 컨테이너에는 모듈이나 기능 단위를 동작하게 하는 최소한의 패키지만 포함되는 게 일반적인데 깡통 우분투를 만들어서 그 안에 온갖 서비스를 다 말아 넣는 경우는 어떤 경우가 있을까요? 쉽게 생각하면 MSA 이전의 모놀리식 아키텍처( Monolithic Architecture )를 이야기할 수 있겠습니다. 도커는 개발환경과 프러덕트 환경의 간극을 줄이는데 크게 일조하고 있는데 이게 MSA로 정교하게 나뉘어져 있는 서비스에만 국한된 이야기가 아닙니다. 모놀리식 서비스라고 하더라도 개발과 프러덕트 환경에 간극을 없게 할 수 있..
이번에는 프로젝트를 진행하면서 놓친 부분을 언급하고 끝내려고 한다. 프로젝트를 시작한 지 이제 일주일 정도 되었고 데이터는 쌓이고 있지만 매우 중요한 부분이기 때문에 누군가 나와 비슷한 계획으로 움직이려고 한다면 미리 생각해야 할 부분일 것이다. 첫 번째로 이야기하는 건 타깃 정류소의 위치다. 이 프로젝트의 핵심은 내가 타고자 하는 정류소의 데이터를 수집하고 수집된 데이터 안에서 버스의 빈자리를 확인하는 데 있다. 예를 들어 특정 시간대에 빈자리가 항상 5자리 있다고 생각해보면 나는 그 시간대에 버스를 타기 위해 움직이면 된다는 이야기다. 여기서 매우 중요한 부분이 간과되고 있는데 바로 그 정류소에서 대기하고 있는 사람의 수이다. 이미 여섯명이 기다리고 있다면 나는 그 정류소에 제때 도착해봐야 앉을 수 ..

요즘은 사이드 프로젝트 하나를 하더라도 기획자와 개발자 몇 명이 모여서 팀을 이루는 경우를 많이 보는데요, 프론트, 백엔드, 거기에 데이터 분석까지 하려고 하면 역시 클라우드를 사용하는 것만큼 유리한 게 없겠죠? 이번에는 GCP( Google Cloud Platform )에 사이드 프로젝트 팀원들을 초대하고 함께 개발할 수 있는 환경을 꾸리는 방법에 대해서 알아봅니다. 혹시 GCP에 가입되어 있지 않다면 여기 링크를 참고하셔서 가입하시면 되겠습니다. 우선 GCP에 접속해서 팀원들과 함께 진행할 프로젝트를 생성해야 하는데 아래 그림처럼 화면 상단에 프로젝트를 선택합니다. 버튼을 클릭하면 아래와 같이 프로젝트를 변경하거나 새 프로젝트를 생성 할 수 있는 팝업이 출력됩니다. GCP는 폴더라는 개념 하위에 프로..

(용인) 집 근처에서 아침에 강남가는 버스를 타면 시간대에 따라서 앉을 수 있는 확률이 많이 갈린다. 경험으로 이야기하자면, - 06시 30분 전후 : 대략 10번에 9번은 앉을 수 있음 (2층버스) - 08시 30분 전후 : 대략 10번에 8~9번 앉을 수 있음 (2층버스) - 09-10시 사이 : 앉을 수 있는 확률 극악 (1층버스) 쉽게 납득하기 어렵다. 아무래도 학생들이나 출근하는 사람수는 08시 30분쯤이 더 많을 것 같은데 오히려 09시-10시 사이가 버스에 앉기 훨-씬 어렵다. 그런데 특이한 점은 09시-10시 사이에는 2층 버스가 덜 운행되는 느낌. 버스회사에 문의해보니 08시 20분까지만 모든 배차가 2층버스로 이뤄지고 그 이후로는 2층버스의 비율이 점차 줄어든단다. 다시말해 타는 사람도..

Cloud SDK는 구글 클라우드 콘솔(웹 브라우저 화면)에서 행하는 거의 모든것들을 터미널에서 가능하게 해줍니다. 어쩌면 110% 이상 가능할지도 모르겠네요. 아직 콘솔에 붙지 않은 일부 알파 버전은 터미널에만 존재하는 경우도 있으니까요. 더욱이 GUI 버그도 무시할 수 없고, 스크립트로 파이프라인을 구성하는 등의 무언가를 하기 위해서는 SDK는 분명 필수 입니다. 특히 인스턴스에 SSH 접속 할 때는 굉장히 편합니다. 물론 아래처럼 콘솔에서 브라우저를 통해 접속도 가능하지만 다른건 둘째치고 반응속도가 너무 느려서 타이핑하는데 다소 불편함을 감수해야 합니다. 이런 불편함은 SDK를 통해 해결 가능한데요, SDK를 설치하고 인증과정부터 SSH접속까지 알아보도록 하겠습니다. SDK설치 과정은 여기 링크를 ..

Google I/O에서 소개된 TensorFlow의 새로운 내용이 잘 정리된 글을 발견하고 번역해봤습니다. 아래 글의 원본은 TensorFlow @ Google I/O'19 Recap 에서 확인 하실 수 있습니다. 혹시 번역에 문제가 있거나 기타 문의가 있다면 말씀해주세요. :-) Google I/O'19가 끝났습니다! 5월 7-9일에 I/O에서 AI와 머신러닝 세션이 13개 다뤄졌는데요, TensorFlow는 2.0, AI for Mobile과 IoT 디바이스, TensorFlow용 Swift, TensorFlow Extended(TFX), TensorFlow.js, TensorFlow Graphics 등의 세션에서 만나 보실 수 있습니다. 이번 글에는 모든 세션 리스트와 링크가 담겨있습니다. 녹화된 ..

서비스를 운영하면서 적당한 시점이 되면 인스턴스를 AMI( amazon machine image )를 생성하고 그때부터는 해당 이미지를 흔히 이야기하는 오토스케일링, 즉 인스턴스 확장으로 사용하게 됩니다. AWS의 경우에는 대부분의 기능들이 리전 단위로 묶여있는데 AMI도 예외는 아닙니다. 글로벌 서비스를 준비하면서 생성한 AMI를 다른 리전에서 사용할 수 없다면 큰 낭패겠죠? 해당 이미지가 왜 리전에 종속되는지 알 수는 없지만 글로벌 배포를 위해서는 AMI를 각 리전에 복사해서 사용해야 합니다. 리전에 종속된다는 사실을 알고 다른 리전으로 넘기기 위해서 AMI를 Export 하고 Import 해야 하는지까지 생각해봤었는데요, 다행히 복사 기능이 제공되어 간단하게 글로벌로 사용이 가능합니다. 우선 아래와..
MySQL을 터미널에서 접속했을 때 현재 동작중인 쿼리를 보려면 아래와 같은 명령어를 사용합니다. MariaDB [(none)]> show processlist; +-------+----------------+-----------+------+---------+------+-------+------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +-------+----------------+-----------+------+---------+------+-------+------------------+----------+ | 14929 | newstyleseller | localhost..
- Total
- Today
- Yesterday