Dev

Dev

Go로 커맨드를 실행할 수 있는 CLI를 구현해보자 (With Cobra)

CLI(Command Line Interface)란 터미널을 통해 사용자와 컴퓨터가 상호작용하는 인터페이스를 말합니다. CLI는 그래픽을 통해 직관적으로 사용할 수 있는 GUI(Graphic User Interface)와 달리 명령줄로만 입력을 전달할 수 있다는 점이 불편할 수 있으나, 빠르고 가볍다는 장점으로 인해 현재에도 널리 사용되고 있습니다. 이런 CLI 환경에서 애플리케이션을 구동하기 위해 바이너리를 실행하는 것은 다소 불편할 수 있습니다. 왜냐하면 바이너리를 다른 설정으로 실행하고자 할시, 그 설정을 가진 버전으로 다시 빌드하고 실행해야 했기 때문인데요. 이 같은 문제를 해결하기 위해 "Command"라는 개념을 도입해 바이너리의 특정 로직을 실행하거나 구성 설정을 변경할 할 수 있습니다. ..

Dev

Apache beam으로 Streaming & Batch 데이터 파이프라인을 생성해보자 (with GCP Dataflow)

Apache beam은 Streaming 및 Batch성 데이터 작업을 지원하는 오픈소스 엔진입니다. "beam"이라는 이름이 Batch에서 "B"를, Streaming에서 "eam"을 가져와 합친 단어라는 데서 Apache beam이 지향하고자 하는 바가 명확히 보입니다. Apache beam은 단일 프로그래밍 모델로 Batch 와 Streaming 데이터 작업을 지원하며, 이렇게 작업한 모델은 다양한 런타임에서 구동할 수 있다는 다양한 활용성이 장점입니다. 현재 데이터 파이프라인 생성을 지원하는 언어는 Python, Java 및 Go가 있습니다. 간단히 Apache beam을 사용해보고자 한다면 아래 링크의 Beam Playground에서 웹 인터렉티브 환경을 이용해볼 수도 있습니다. https://..

Dev

Gradle을 이용해서 Springboot + GCP API 연동한 Java 프로젝트 생성 및 배포하기

Gradle은 여러 언어를 지원하는 빌드 자동화(build automation) 도구입니다. 기존에는 Ant나 Maven과 같은 여러 빌드 도구가 있었지만, Gradle은 이 중 가장 최근에 출시한 빌드 도구로써 성능이나 이용성 면에서 더 진보한 도구이기도 합니다. 이번 포스팅에서는 Gradle을 이용해서 GCP API를 연동한 Springboot 웹 애플리케이션을 빌드해보고, 이를 통해 생성된 Jar 아티팩트를 GCP의 아티팩트 레포지토리인 Artifact registry에 배포하는 과정을 step by step으로 알아보도록 하겠습니다. 1. GCP 리소스 구성 우선 Google Cloud Platform에서 준비해야 할 리소스들을 구성합니다. 이번 포스팅에서는 Gradle을 이용해 생성한 Jar 아..

Dev

Onclick vs AddEventListener 어떤 것을 사용해야 할까?

Onclick과 AddEventListener 라는 비슷한 메소드 중 어떤 것을 사용해야 할까? 우선 Onclick() 메소드는 다음과 같이 사용할 수 있다. 1 element.attachEvent('onclick', function() { /* do stuff here*/ }); attachEvent() 메소드를 통해 붙여진 Onclick 메소드는 말 그대로 element를 '클릭'시 function을 실행시키는 기능이다. 하지만 AddEventListener는? 1 element.addEventListener('click', function() { /* do stuff here*/ }, false); 이런 식으로 AddEventListener를 통해 click 시 function을 실행시키는 메소드이..

Dev

Django 의 Password Validation 삽질기

최근 Django를 이용해 제작하는 프로젝트를 하는 중이다. Django가 제공하는 CBV 중 PasswordChangeView를 사용해 비밀번호 변경 페이지를 만들던 중에 나를 곤경에 빠지게 했던 경우가 있어 글로 써보자 한다. Django에서 제공하는 auth는 password라는 자체적인 type을 제공해 입력한 비밀번호를 암호화해주며 안전하게 설정할 수 있도록 도와준다. 이 기능을 자세히 모르고 있어 사단이 났다. 위의 화면처럼 ChangePasswordview를 사용하면 간편하게 비밀번호 변경 페이지를 제작할 수 있다. 여기서 필요한 구성요소는 기존 비밀번호인 old_password, 새 비밀번호인 new_password1 새 비밀번호 확인용인 new_password2가 전부이다. 그래서 비밀번..

Dev

Node.js + MongoDB 로 이미지 웹 만들어보기 (2)

본 글은 이전 글 Node.js + MongoDB 로 이미지 웹 만들어보기(1)에서 이어진다. Node.js + MongoDB 로 이미지 웹 만들어보기(1) Node.js + MongoDB 로 이미지 웹 만들어보기 (1) 1. 시작 Node.js와 MongoDB 를 사용해서 이미지를 업로드하고 볼 수 있는 기초적인 웹 애플리케이션을 만들어 보고자 한다. 기본적인 기능과 디자인은 https://imgur.com/ 과 비슷한 형태가 될 것이라고 생각하고.. nangman14.tistory.com 이전 글에서 웹 애플리케이션을 만드는데 필요한 기술 스택과 개략적인 구조를 알아보았다. 이제 본격적으로 웹에서 이미지를 업로드해 저장되는 과정을 알아보자. Client는 찾아보기 버튼을 통해 이미지 파일을 올린 뒤 ..

Dev

Node.js + MongoDB 로 이미지 웹 만들어보기 (1)

1. 시작 Node.js와 MongoDB 를 사용해서 이미지를 업로드하고 볼 수 있는 기초적인 웹 애플리케이션을 만들어 보고자 한다. 기본적인 기능과 디자인은 https://imgur.com/ 과 비슷한 형태가 될 것이라고 생각하고 있다. 평소에 Freequration 이나 Pixabay 같은 이미지 사이트를 유용하게 사용해와서 동일한 기능의 사이트를 제작해보고 싶었다. 초기에 기획했던 기초적인 명세는 다음과 같다. 1. Client가 사이트에 이미지를 업로드하면, 사이트에 업로드의 시간순으로(최신순) 업로드된 이미지들을 볼 수 있다. 2. 업로드된 이미지를 클릭하면 이미지의 제목과 설명, 추가적으로 좋아요와 댓글을 볼 수 있게 한다. 3. 기본적으로 메인 페이지(진입 페이지)와 이미지 페이지(이미지를 ..

Seungwoo Lee
'Dev' 카테고리의 글 목록