[바미] Go - Slice가 왜 Slice인지 알아보자
·
프로그래밍(Basic)/Golang
Slice가 왜 Slice인지 알아 보도록 해봅시다. Slice는 어떤 일부를 잘라내서 덜어내는걸 말하는데 Golang의 Slice는 일부를 잘라낼 수가 있습니다. 그럼 어떻게 하는지 살펴보죠. a [10]int 10개짜리 배열이 있다 가정하고 []를 이용해서 배열의 요소를 접근하는데 a [10]int a[3] 이렇게 하면 a의 4번째 배열요소를 가져올 것이다. 그래서 a가 1~10까지 10개의 요소를 가지고 있다고 하면 a[3] == 4 가 될 것 입니다. Slice도 마찬가지 입니다. a []int a[4:7] Slice는 []안에 ':'을 붙여서 숫자 2개를 적습니다. 이 뜻은 첫번째 부분은 시작 index이고 두번째 부분은 마지막Index 부분인데 5~6번째까지 가져옵니다. a[StartIndex..
[바미] Go - Slice에 대해 알아보자!
·
프로그래밍(Basic)/Golang
대부분의 현대 언어들은 동적 배열들을 하나씩 가지고 있는데 C++에서는 Vector, Java에서는 ArrayList, C#에서는 List, Python은 Golang과 똑같은 Slice, Golang도 마찬가지 입니다. 그렇다면 동적배열이 무엇일까요? 동적배열의 반대가 정적배열인데 정적배열(Fixed size array)은 길이가 바뀌지 않는 배열입니다. [10]int이렇게 사용합니다. 반대로 동적배열은 [] int 이렇게 표시하는데 길이가 변하는 배열이라 생각하면 됩니다. 그래서 처음에 하나가 되었다가 두개가 되었다가 세개가 되는 배열입니다. 그럼 이걸 어떻게 만들었는지 생각해보죠. 메모리가 늘어날 수는 없습니다. 메모리는 처음 할당받은 사이즈가 있으면 그 사이즈를 그대로 써야지 그 사이즈를 넘어서 ..
[바미] Typescript jwt_로그인 구현하기.
·
프로그래밍(Web)/Javascript(TS,Node)
Web에서 로그인을 구현하는 방법에는 여러 가지가 있습니다. 일반적으로 Session과 Cookie를 통한 로그인 구현 방식을 떠올릴 수 있는데요. JWT는 앞의 두 가지와 약간 다른 것으로 최근에 많이 사용되는 인증(Authentication) 방법 중 하나 입니다. 특히 Web Application이나 Mobile Application에서 사용자 인증하기 편한 방법으로 많은 서비스에서 사용하고 있습니다. JWT가 무엇인지 아래에서 알아보겠습니다. JWT란 무엇입니까? JSON Web Token (JWT)은 JSON 객체로서 당사자간에 안전하게 정보를 전송할 수있는 작고 독립적 인 방법을 정의 하는 공개 표준 ( RFC 7519 )입니다. 이 정보는 디지털로 서명 되었기 때문에 검증되고 신뢰할 수 있습..
[바미] TypeScript를 사용하여 실시간 채팅 앱 작성
·
프로그래밍(Web)/Javascript(TS,Node)
reference 참고 사이트 참고 사이트 Releasing v1.0.0 of a Socket.io-TypeScript Chat Project Some months ago I implemented a simple chat version using TypeScript language only. This project was presented in a local conference. luixaviles.com 위 사이트 들을 바탕으로 작성된 글입니다. TypeScript를 사용한 실시간 앱 : Web Sockets, Node & Angular 및 통합. 얼마 전에 TypeScript 언어 만 사용하여 간단한 채팅 응용 프로그램을 구현했습니다. 주요 목표는 클라이언트 측과 서버에서이 프로그래밍 언어를 사용하는..
[바미] Date.now()에 대해 알아보자!
·
프로그래밍(Basic)/Javascript(TS,Node)
Date.now() 메소드는 UTC 기준으로 1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리 초를 반환합니다. 문법 var timeInMs = Date.now(); 설명 now() 메소드는 1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리 초를 Number 형으로 반환합니다. now()는 Date의 정적 메소드이기 때문에, 항상 Date.now()처럼 사용하셔야 합니다. Polyfill 이 메소든는 ECMA-262 5판에서 표준화되었습니다. 아직 이 메소드를 지원하도록 갱신되지 않은 엔진들은 이 메소드의 미지원에 대한 차선책으로 다음 코드를 활용하실 수 있습니다. if (!Date.now) { Date.now = function now() { return new Date().g..
[바미] Node 내장 암호화 모듈 Crypto에 대해 알아보자!
·
프로그래밍(Basic)/Javascript(TS,Node)
비밀번호를 단순히 평문으로 데이터베이스에 저장하는 것은 범죄와 다름 없습니다. 데이터베이스가 해킹 당하는 순간 고객들의 비밀번호가 그대로 해커의 손에 넘어가게 되는 것이죠. (데이터베이스가 해킹 당하지 않는 것이 최선..) 그렇기 때문에 비밀번호 암호화로 안전장치를 만들어 놓는 것입니다. 암호화의 방법은 단방향 암호화와 양방향 암호화 두가지가 있습니다. 먼저 단방향 암호화에 대해서 알아보겠습니다. 단방향 암호화 비밀번호는 보통 단방향 암호화를 사용합니다. 단방향 암호화는 복호화 할 수 없는 암호화 방식입니다. 복호화는 암호화된 문자열을 암호화 되기전의 평문으로 되돌려 놓는 것을 의미합니다. 그러므로 단방향 암호화를 사용하게 되면 원래 문자열이 무엇인지 알 수 없습니다. Q: 왜 비밀번호 저장을 단방향 암..
[바미] Nestjs 및 TypeScript를 사용하여 AWS S3에 이미지 업로드
·
프로그래밍(Web)/Javascript(TS,Node)
Nestjs 및 TypeScript를 사용하여 AWS S3에 이미지 업로드 최근 프로젝트에서 백엔드에 있는 Nestjs와 Typescript를 사용하여 AWS S3에 이미지를 업로드해야 했습니다. Typescript와 Nestjs를 사용하여 이 작업을 수행하는 간단한 단계를 공유합니다. 이 코드는 Nestjs 및 typescript용 코드이지만 Express를 사용하여 Nodej에 대한 이미지 업로드에 대해서도 참조하고 그에 따라 변경할 수 있습니다. 먼저 이미지 업로드를 위해 AWS S3 버킷을 설정해야 합니다. 만약 당신이 그것을 어떻게 하는지 모른다면 여기를 참고하시기 바랍니다. 이제 typescript를 사용하여 이미지 업로드에 대한 백엔드 코드를 설정해야 합니다. 이미지 업로드를 S3으로 설정하..
[바미] node.js에서 aws s3 스토리지에 이미지 저장하기
·
프로그래밍(Web)/Javascript(TS,Node)
node.js에서 aws s3 스토리지에 이미지 저장하기 AWS에서 제공하는 S3 스토리지는 다양한 파일을 bucket에 보관할 수 있다. 자세한 내용은 생활코딩 강의 참고하면 좋다. 그럼 우선 aws sdk를 설치하여야 한다. npm i aws-sdk --save 그리고 AWS IAM에서 생성한 사용자가 있어야 한다. 사용자는 S3에 대한 권한을 가지고 있어야 한다. 사용자를 생성하고 권한을 부여하는 기능은 어렵지 않기때문에 검색해서 적용하면 된다. 그리고 해당 사용자를 생성하면 csv 파일로 secretkey를 받을 수 있다. 이를 AWS S3에 접근하여 사용하기 위해서 사용된다. 기본 정보가 담긴 config.json 생성 우선 부여 받은 사용자 accessKeyId와 secretAccessKey ..
[바미] Typescript와 AWS Lambda로 모니터링에 유용한 API 패턴 구성하기
·
프로그래밍(Web)/Javascript(TS,Node)
람다를 크게 세 부분으로 나눕니다. 사용자로부터 받은 데이터를 검증해주는 컨트롤러 비즈니스로직을 구성하는 서비스 API나 데이터베이스와 연결되는 레파지토리 그럼 상품을 구매하는 Shop 예제를 통해 차근차근 보겠습니다. Shop예제 shop.ts const repo: ShopRepository = new ShopRepository(); const service: ShopService = new ShopService(repo); const controller: ShopController = new ShopController(service); export const purchaseItem = controller.purchaseItem 위 이미지처럼 컨트롤러는 생성자로 서비스를, 서비스는 생성자로 레파지토리를..
Bami
기록하며 성장하기